Board logo

標題: 數據需要重新編碼,請幫幫我一下 [打印本頁]

作者: brabus    時間: 2014-3-23 00:25     標題: 數據需要重新編碼,請幫幫我一下

我有一些資料檔,需要重新編碼
工作表一從c2到di123重新編碼完後。要放到工作表二相同的位置
ps:未來不同的資料檔資料數量是不同的(有的會到90歲)
重新編碼的原則如下:
以性別2,年齡是15為例原始數據如下
第一年    第二年   第三年   第四年   第五年   第六年
202        445        694        950        1213        1484

編碼後儲存格值=202-性別-年齡的最後碼
也就是202-2(性別的數值)-5(年齡的末碼,十位數不計)=195
這個值放到工作表二的C33儲存格
D33=445-2-5=438放到工作表二的D33的位置
E33=694-2-5=687放到工作表二的E33的位置
F33=950-2-5=943 放到工作表二的F33的位置
…………………………………………………………..以此類推
希望各位高手幫忙解答
數據在附件中
謝謝
作者: yen956    時間: 2014-3-23 19:02

回復 1# brabus

方法一
工作表2 C3 公式:
=工作表1!C2-$A2-MOD(工作表1!$B2,10)
複製到全部

方法二
用VBA
  1. Option Explicit
  2. Private Sub CommandButton1_Click()
  3.     Dim sh1, sh2 As Worksheet
  4.     Dim i, j, endRow, endCol As Integer
  5.     Set sh1 = Sheets("工作表1")
  6.     Set sh2 = Sheets("工作表2")
  7.     endRow = sh1.[A65536].End(xlUp).Row
  8.     endCol = sh1.[IV2].End(xlToLeft).Column
  9.     sh1.[A:B].Copy sh2.[A1]
  10.     sh1.[1:1].Copy sh2.[A1]
  11.    
  12.     For i = 3 To endCol
  13.         For j = 2 To endRow
  14.             sh2.Cells(j, i) = sh1.Cells(j, i) - sh1.Cells(j, 1) - sh1.Cells(j, 2) Mod 10
  15.         Next
  16.     Next
  17. End Sub
複製代碼
工作表2 的 CommandButton1
作者: brabus    時間: 2014-3-23 19:33

回復 2# yen956


    感謝yen956大的回覆
   我有用=工作表1!C2-工作表1!$A$2-RIGHT(工作表2!B2,1)來完成
   你是用餘數來完成,讓我有學習到
   可是因為數據到時到複制到別的工作表去使用
   我怕複制會把公式COPY過去而讓值沒辦法帶過去
   所以才想用VBA來完成
   看這樣會不會簡單一點
   因為對VBA是新手 在摸索中
  會慢慢去了解內容的義意
  謝謝你的回覆
作者: yen956    時間: 2014-3-24 12:20

回復 3# brabus
大大你好!
補充說明(方便你修改):
   '[A65536].End(xlUp)→
    '由 [A65536] 開始向上查, 直到找到非空白格為止
    '.Row → 非空白格 的 列號
    endRow = sh1.[A65536].End(xlUp).Row
   
    '.Column → 非空白格 的 欄號(數字)
    endCol = sh1.[IV2].End(xlToLeft).Column
   
    '複製 欄A、欄B 到 sh2
    sh1.[A:B].Copy sh2.[A1]
   
    '複製 第一列 到 sh2
    sh1.[1:1].Copy sh2.[A1]
補圖:

作者: brabus    時間: 2014-3-26 10:44

回復 4# yen956


  太可怕了
你怎麼知道你後來補的部份是我不懂的
你有讀心術嗎?
真的謝謝你
作者: yen956    時間: 2014-3-26 12:02

我也剛學來的(向GBKEE版大學的),
現學現賣, 有問題再說啦.
作者: brabus    時間: 2015-11-20 14:45

上面的東西我有遇到問題
如果在表格中的內容會有文字和數字的參雜積不一定在那個行列中)
如果是數字要轉換
如果是文字直接複制
我該怎麼改內容

For i = 3 To endCol
        For j = 2 To endRow
    if 是文字 then(請問這兒怎麼下指令???
   我想用isnumber()對嗎?如果是否則直接copy
           sh2.Cells(j, i) = sh1.Cells(j, i)
     ELSE
            sh2.Cells(j, i) = sh1.Cells(j, i) - sh1.Cells(j, 1) - sh1.Cells(j, 2) Mod 10
END IF
        Next

請高手指教,謝謝
作者: GBKEE    時間: 2015-11-21 08:05

回復 7# brabus
試試看
  1. Option Explicit
  2. Sub Ex()
  3.     Dim Ar(), xRow As Integer, xCol As Integer
  4.     Ar = Sheets("工作表1").UsedRange.Value
  5.     For xRow = 2 To UBound(Ar)                '同工作表上的列
  6.         For xCol = 3 To UBound(Ar, 2)         '同工作表上的欄
  7.             If IsNumeric(Ar(xRow, xCol)) Then '是數字
  8.                 Ar(xRow, xCol) = Ar(xRow, xCol) - Ar(xRow, 1) - Ar(xRow, 1) Mod 10
  9.             End If
  10.         Next
  11.     Next
  12.     Sheets("工作表2").Range("A1").Resize(UBound(Ar), UBound(Ar, 2)) = Ar
  13. End Sub
複製代碼

作者: brabus    時間: 2015-11-22 16:06

回復 8# GBKEE


謝謝g大的回覆喔




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)