|
(1)ローカルウインドウの表示の件
Sub test()
Dim dic As Object
Set dic = CreateObject("Scripting.Dictionary")
dic("a") = 1
dic("b") = 2
Stop
End Sub
でローカルウインドウに表示されるのは、
"a"や"b"であって、1や2ではありません。
"Item"というのは、コレクション的なものの、各要素といった程度の意味です。
そしてdictionaryの場合はキーの値が表示される決まりです。
(2)
ところで、前半はこんな風にも書けるでしょう。
Sub test51()
Dim dic As Object
Dim mat As Variant
Dim s As String
Dim i As Long
Dim j As Long
Dim sh1 As Worksheet
Set dic = CreateObject("Scripting.Dictionary")
Set sh1 = Worksheets("Sheet1")
' 元データを配列に格納
mat = sh1.Range("A1").CurrentRegion.Value
' dicへデータを格納
For i = 1 To UBound(mat, 1)
s = mat(i, 1) & "_" & mat(i, 3)
dic(s) = dic(s) + mat(i, 4)
Next
(3)
このあとに続く部分は、アクティブシートに書き込むということですね?
シートを指定したコードにしたほうが間違いがないですよ。
Sheet1をアクティブにしておくと上書きされかねない。
(4)
また、そのキーの値は、予め判明しているのですか?
そのキーたちを、順序を含めて求めることになると、
むしろピボットテーブルを使ったほうが自然かもしれません。
|
|