|
Dictionaryを使って、キーに対応するアイテムの合計を算出したいです。
キーとなる値=6桁の数値
アイテム=小数点を含む数値
キーの範囲=Range("J51:CE81")…一部空白セル有り
アイテムの範囲=Range("J1:CE1")…全て実装
下記のコードでは
(1)アイテムの合計はキーの数値にアイテムの数値が加算されたものになってしまいます。
ex.キーが111111で,そのアイテムの合計が7.75の場合は111118.75
(2)試しにキーに文字列を代入すると★で"実行時エラー 13 型が一致しません"と出ます。
不備な点をご指摘ください。
Sub test()
Sheets("Sheet1").Activate
Dim Dic As Object, buf, iR, iC, i, keys, iT
'管理ナンバー収集
Range("F91:G110").ClearContents
Set Dic = CreateObject("Scripting.Dictionary")
For iR = 51 To 81
For iC = 10 To 83
If Cells(iR, iC).Value <> "" Then
buf = Cells(iR, iC).Value 'セルの値をbufに格納(キー)
If Not Dic.Exists(buf) Then '未登録の場合
Dic.Add buf, buf 'セルの値を登録
Dic.Item(buf) = Dic.Item(buf) + Cells(1, iC).Value '対応する行1の値(アイテム)を加算していく★
Else '登録済みの場合
Dic.Item(buf) = Dic.Item(buf) + Cells(1, iC).Value '対応する行1の値(アイテム)を加算していく
End If
End If
Next iC
Next iR
keys = Dic.keys
For i = 0 To Dic.Count - 1
Cells(i + 91, 6) = keys(i) 'キーを表示
Next i
iT = Dic.Items
For i = 0 To Dic.Count - 1
Cells(i + 91, 10) = iT(i) 'アイテムを表示
Next i
Set Dic = Nothing
End Sub
|
|