在EXCEL中用宏合并同类项,并数量相加?

如下图,A是供应商的名称 ,B是规格,C是数量,D是单位。如何合并成下图?求高手做个宏,谢谢!
A B C D
60 120 8 1
60 120 7 1
30 60 3 2
30 60 5 2
30 30 1 1
20 40 2 2
30 30 1 1
20 40 1 2
30 60 5 2

合并后成这样
A B C D
60 120 15 1
30 60 13 2
20 30 2 1
40 1 2
合并后 B列40是 3 。

第1个回答  2013-02-28
你的。。。。
同一个规格不会有两家供应商,那样简单多了。
公式如下:
合并后放在EFGH四列
F1:
=index(b$1:b$100,small(if( row(b$1:b$100)=match(b$1:b$100,b$1:b$100,0),row(b$1:b$100),""),row()))
(要ctrl+shift+enter)

E1:
=if(f1="","",lookup(b$1:b$100,f1,a$1:a$100)

G1:
=if(f1="","",sumif(b$1:b$100,f1,c$1:c$100)

H1:
=if(f1="","",lookup(b$1:b$100,f1,d$1:d$100)

复制E1:H1,下拉复制即可
第2个回答  2013-02-28
Sub 汇总()
Dim arr, brr, crr, r%, rr%
r = [A65536].End(3).Row
arr = Range("a2:d" & r)
Range("a2:d" & r).ClearContents
t = 1
For i = 1 To UBound(arr)
If Trim(arr(i, 1)) <> "" Then
y = Trim(arr(i, 1)) & Trim(arr(i, 2)) & Trim(arr(i, 4))
brr = arr(i, 3)
For j = i + 1 To UBound(arr)
yy = Trim(arr(j, 1)) & Trim(arr(j, 2)) & Trim(arr(j, 4))
If y = yy Then
brr = brr + arr(j, 3)
arr(j, 1) = ""
End If
Next
t = t + 1
arr(i, 3) = brr
Range("a" & t).Resize(1, UBound(arr, 2)) = Application.Index(arr, i, 0)
brr = ""
End If
Next
End Sub

提供一个不使用字典汇总数据的方法,希望能满足你的要求本回答被网友采纳
第3个回答  2013-02-28
不需要宏 直接数据透视
第4个回答  2013-02-28
30 30 1 1 这行哪去了?
Hi聊吧,那样解决得快点。
相似回答