Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3035|回复: 4

[已解决]如何用VBA进行双条件汇总?

[复制链接]
发表于 2010-4-23 20:56 | 显示全部楼层 |阅读模式

如何根据两个条件分别对产品进行汇总?

TX6uVIb8.zip (2.26 KB, 下载次数: 101)

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2010-4-23 21:08 | 显示全部楼层

Sub test()
Dim d As Object
Dim arr, arrt(), arr0
Dim i%, k%
Set d = CreateObject("Scripting.Dictionary")
arr = Range("a2:c" & [a65536].End(3).Row)
For i = 1 To UBound(arr)
    d(arr(i, 1) & "-" & arr(i, 2)) = d(arr(i, 1) & "-" & arr(i, 2)) + arr(i, 3)
Next
arrt = d.Keys
ReDim arr0(0 To d.Count - 1, 1 To 3)
For k = LBound(arrt) To UBound(arrt)
    arr0(k, 1) = Split(arrt(k), "-")(0)
    arr0(k, 2) = Split(arrt(k), "-")(1)
    arr0(k, 3) = d(arrt(k))
Next
Range("h2:j65536").ClearContents
[h2].Resize(d.Count, 3) = arr0
Set d = Nothing
End Sub
回复

使用道具 举报

 楼主| 发表于 2010-4-23 21:12 | 显示全部楼层

这样会打破我条件区域的条件顺序,能不能不要打破此顺序?
回复

使用道具 举报

发表于 2010-4-23 21:22 | 显示全部楼层    本楼为最佳答案   

Sub test()
Dim d As Object
Dim arr, arrt
Dim i%, k%
Set d = CreateObject("Scripting.Dictionary")
arr = Range("a2:c" & [a65536].End(3).Row)
For i = 1 To UBound(arr)
    d(arr(i, 1) & "-" & arr(i, 2)) = d(arr(i, 1) & "-" & arr(i, 2)) + arr(i, 3)
Next
arrt = Range("h2:j" & [h65536].End(3).Row)
For k = 1 To UBound(arrt)
    arrt(k, 3) = d(arrt(k, 1) & "-" & arrt(k, 2))
Next
Range("h2:j65536").ClearContents
[h2].Resize(UBound(arrt), 3) = arrt
Set d = Nothing
End Sub
回复

使用道具 举报

发表于 2013-8-2 13:15 | 显示全部楼层
枯禅 发表于 2010-4-23 21:22
Sub test()Dim d As ObjectDim arr, arrtDim i%, k%Set d = CreateObject("Scripting.Dictionary")arr = Ra ...

那如果是跨工作簿汇总呢?需要怎么修改?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-30 05:26 , Processed in 0.508436 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表