|
あちこち調べてみましたが、Scripting.Dictionaryの使い方がどうも理しきれていません(-_-;)下記のコードについて質問させてください。Dictionaryがキーとitemをもてるオブジェクトということは理解しているつもりなのですが…。
Set myDic = CreateObject("Scripting.Dictionary")
'A列とC列の1〜最終行を選択
With Worksheets(strDataSheet)
Set myRng = Intersect(Union(.Columns("A"), .Columns("C")), .UsedRange)
End With
i = 0
'2行目〜最終行までのループ
For idxRow = 2 To myRng.Rows.Count
'A列+C列をDictionaryのKeyにする
myKey = myRng(idxRow, 1) & vbTab & myRng(idxRow, 2)
'Keyが存在しなかったら
If Not myDic.exists(myKey) Then
i = i + 1
myDic(myKey) = i ←この意味は?
myRng(i, 1) = myRng(idxRow, 1) ←この意味は?
myRng(i, 2) = myRng(idxRow, 2) ←この意味は?
myRng(i, 3) = 1 ←この意味は?
'Keyが存在したら
Else
myRng(myDic(myKey), 3) = myRng(myDic(myKey), 3) + 1
End If
Next
i = 0
'集計結果の出力 ※これでは結果が出ませんでしたのでどこか間違っていそうです
With Worksheets(strOutputSheet)
idxRow = idxMaxRow
For lngIdx = 2 To myRng.Rows.Count
i = i + 1
.Cells(idxRow, 1) = myRng(i, 1) ←これが間違い?
.Cells(idxRow, 2) = myRng(i, 2) ←これが間違い?
.Cells(idxRow, 3) = myDic(myKey) ←これが間違い?
Next
End With
|
|