|
代码如下
- Sub 求和()
- Dim arr, D As Object, ar
- Dim i As Integer, j As Byte
-
- Set D = CreateObject("scripting.dictionary")
- Set d1 = CreateObject("scripting.dictionary")
- Set d2 = CreateObject("scripting.dictionary")
- arr = Sheet2.Range("a1").CurrentRegion '选定区域装入数组
- For i = 1 To UBound(arr) '循环从数组第1行到数组的最后一行
- D(arr(i, 1) & "|" & arr(i, 2)) = D(arr(i, 1) & "|" & arr(i, 2)) + arr(i, 3)
- d1(arr(i, 1) & "|" & arr(i, 2)) = arr(i, 1)
- '字典d1的KEY是arr(i, 1) & "|" & arr(i, 2),item是arr(i,1),也就是对应行数的日期
- d2(arr(i, 1) & "|" & arr(i, 2)) = arr(i, 2)
- '字典d2的KEY是arr(i, 1) & "|" & arr(i, 2),item是arr(i,2),也就是对应行数的用户名称
- Next i
- Sheet3.Range("a1").Resize(d1.Count, 1) = Application.Transpose(d1.items)
- '把字典d1的items写出来
- Sheet3.Range("b1").Resize(d2.Count, 2) = Application.Transpose(d2.items)
- ar = Sheet3.Range("a1").CurrentRegion
- '装入输入ar
- For j = 1 To UBound(ar, 1)
- ar(j, 3) = D(ar(j, 1) & "|" & ar(j, 2))
- 'ar数组的第3列用字典D的item替换, 其中,ar(j, 1) & "|" & ar(j, 2)为字典D的key,是返回字典item结果的依据
- Next j
- Sheet3.Range("a1").Resize(UBound(ar), 3) = ar
- '把ar数组的三列数据写入到以a1开始的连续单元格中
- End Sub
复制代码
对于
d1(arr(i, 1) & "|" & arr(i, 2)) = arr(i, 1)
'字典d1的KEY是arr(i, 1) & "|" & arr(i, 2),item是arr(i,1),也就是对应行数的日期
d2(arr(i, 1) & "|" & arr(i, 2)) = arr(i, 2)
'字典d2的KEY是arr(i, 1) & "|" & arr(i, 2),item是arr(i,2),也就是对应行数的用户名称
这两句在本地窗口显示的情况如下,item对应的值是”日期|用户“,是不是我的注释理解得有错呢?麻烦各位前辈普及知识。
附件
字典条件求和三.rar
(8.27 KB, 下载次数: 328)
|
|