|
年末調整事務をしています。
1年間の課税所得額、社会保険料控除額、源泉徴収税額をDictinaryを利用して集計をしようとネットで調べて、あるサイトでDictionaryを使って「重複しない品名と個数の合計を計算します」というものを見つけたのですが、なにせ初心者、読解力なしの私には難解で、すぐに活用できそうにありません。
自分のデータ表に合うようなコードを教えてください。
1年12ヶ月分の各個人の給与支給データ(A列〜CR列、毎月約80名×12=約1,000行ほどのデータ量)が格納されたシート”支給台帳”(A列〜CR列)のうち、C列=社員IDを元に、その社員IDに対応したD列=氏名を抽出すると同時に、CN列=課税所得額、BZ列=社会保険控除額、CO列=源泉徴収税額の3項目の合計額の結果を、シート”年調データ”のA列に社員ID、B列に氏名、C列に課税所得額、D列に社会保険控除額、E列に源泉徴収税額の各集計結果を抽出させたいのですが、ご教示いただけませんか?
折角しらべたのだから、下のコードでいろいろ試せばいいのでしょうが、いかんせん、実稼動させる期限がせまり余裕がなくあせっています。
丸投げで申し訳ありませんが、ご教示ください。
'///以下は調べたサイトのコードです。
Sub rei21_2()
Dim myDic As Object, myKey, myItem
Dim myVal
Dim i As Long
Set myDic = CreateObject("Scripting.Dictionary")
Range("D2", Range("E" & Rows.Count).End(xlUp)).ClearContents
Range("D1:E1").Value = Range("A1:B1").Value
' ---元データを配列に格納
myVal = Range("A2", Range("A" & Rows.Count).End(xlUp)).Resize(, 2).Value
' ---myDicへデータを格納
For i = 1 To UBound(myVal, 1)
If Not myVal(i, 1) = Empty Then
If Not myDic.exists(myVal(i, 1)) Then
'---新たなkeyの時はkeyとitemを追加します
myDic.Add myVal(i, 1), myVal(i, 2)
Else
'---すでに存在しているkeyの時はitemを加算します
myDic(myVal(i, 1)) = myDic(myVal(i, 1)) + myVal(i, 2)
End If
End If
Next
' ---Key,Itemの書き出し
myKey = myDic.keys
myItem = myDic.items
For i = 0 To UBound(myKey)
Cells(i + 2, 4).Value = myKey(i)
Cells(i + 2, 5).Value = myItem(i)
Next
Set myDic = Nothing
End Sub
|
|