|
遅くなりました。
dictionaryとは、
Key → Item
という対応関係を管理する容れ物です。
・Keyは文字列とか数値などをとることが多いですが、
・Itemも色々なものを保持することができます。
既に提示されたのは、配列の行番号をとったものですが、
(提示された方法のように)配列そのものを持たせることもできます。
こんな感じになるでしょう。参考にしてみて下さい。
Sub test()
Dim dic As Object
Dim k As Long, j As Long, r As Long
Dim s As String
Dim v As Variant
Dim itm As Variant
Dim key As Variant
Set dic = CreateObject("Scripting.Dictionary")
For k = 2 To 10
s = Cells(k, 1).Value
If Not dic.Exists(s) Then
v = Cells(k, 2).Resize(1, 6).Value
dic(s) = v
Else
'いったん取り出し
itm = dic(s)
'各要素に加算
v = Cells(k, 2).Resize(1, 6).Value
For j = 1 To 6
itm(1, j) = itm(1, j) + v(1, j)
Next
'再度 格納
dic(s) = itm
End If
Next
Sheet2.Range("A2").Resize(dic.Count, 1) = Application.Transpose(dic.keys)
'結果をシートに書き出す
r = 1
For Each key In dic
itm = dic(key)
r = r + 1
Sheet2.Cells(r, 2).Resize(1, 6) = itm
Next
End Sub
考え方に焦点を当てていますので、元データの行数や列数とか、
転記先の一行目の項目名、などは適当にしています。
そちらで修正して下さい。
また、各配列は、あえて一次元に変換せず、二次元のままにしています。
|
|