標題:
數據需要重新編碼,請幫幫我一下
[打印本頁]
作者:
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
Option Explicit
Private Sub CommandButton1_Click()
Dim sh1, sh2 As Worksheet
Dim i, j, endRow, endCol As Integer
Set sh1 = Sheets("工作表1")
Set sh2 = Sheets("工作表2")
endRow = sh1.[A65536].End(xlUp).Row
endCol = sh1.[IV2].End(xlToLeft).Column
sh1.[A:B].Copy sh2.[A1]
sh1.[1:1].Copy sh2.[A1]
For i = 3 To endCol
For j = 2 To endRow
sh2.Cells(j, i) = sh1.Cells(j, i) - sh1.Cells(j, 1) - sh1.Cells(j, 2) Mod 10
Next
Next
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
試試看
Option Explicit
Sub Ex()
Dim Ar(), xRow As Integer, xCol As Integer
Ar = Sheets("工作表1").UsedRange.Value
For xRow = 2 To UBound(Ar) '同工作表上的列
For xCol = 3 To UBound(Ar, 2) '同工作表上的欄
If IsNumeric(Ar(xRow, xCol)) Then '是數字
Ar(xRow, xCol) = Ar(xRow, xCol) - Ar(xRow, 1) - Ar(xRow, 1) Mod 10
End If
Next
Next
Sheets("工作表2").Range("A1").Resize(UBound(Ar), UBound(Ar, 2)) = Ar
End Sub
複製代碼
作者:
brabus
時間:
2015-11-22 16:06
回復
8#
GBKEE
謝謝g大的回覆喔
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)