|
本帖最后由 SHENQIAN 于 2015-12-26 20:02 编辑
Sub 多列汇总()
Dim 棋盘(1 To 1000, 1 To 4)
Dim x
Dim arr, y As Integer, sr As String, k As Integer
Dim d As New Dictionary
arr = Range("a2:d" & Range("a65536").End(xlUp).Row)
For y = 1 To UBound(arr)
sr = arr(y, 1) & "-" & arr(y, 2)
If d.exists(sr) Then
x = d(sr)
棋盘(x, 3) = 棋盘(x, 3) + arr(y, 3)
棋盘(x, 4) = 棋盘(x, 4) + arr(y, 4)
Else
k = k + 1
d(sr) = k
棋盘(k, 1) = arr(y, 1)
棋盘(k, 2) = arr(y, 2)
棋盘(k, 3) = arr(y, 3)
棋盘(k, 4) = arr(y, 4)
End If
Next y
Range("g2").Resize(k, 4) = 棋盘
End Sub
产品名称 | 型号 | 数量 | 金额 | A | a1 | 11 | 2 | B | a2 | 2 | 3 | C | a2 | 3 | 45 | A | a1 | 78 | 5 | E | c1 | 5 | 16 | Y | b1 | 12 | 7 | J | c1 | 10 | 8 | B | c2 | 8 | 9 | E | b2 | 9 | 10 | L | a1 | 10 | 20 | Q | b2 | 110 | 12 | C | c2 | 12 | 22 | R | a1 | 2 | 14 | T | c1 | 14 | 15 | Y | b1 | 25 | 16 | L | c1 | 5 | 10 | O | c2 | 17 | 8 | Q | b2 | 18 | 5 | T | a1 | 12 | 2 | 我这个有什么问题,为什么声明的字典好像没有用?
本帖最后由 qh8600 于 2015-12-26 16:14 编辑
SHENQIAN 发表于 2015-12-26 16:11
怎么引用呢?
我这个是用别人的,那为什么他的可以用呀?
前期绑定,在工具中要勾选字典对象的,一般建议使用后期绑定,这样换个电脑也没事,不然,换个电脑又要勾选了
Dim d As New Dictionary
把这个改成 dim d as Object
然后加上下面这句,这是字典后期绑定
Set d = CreateObject("Scripting.Dictionary")
|
|