vba 按照group多行汇总
不同于之前写过的 《ExcelVBA统计表生成函数及应用实例》对数据的2个条件汇总生成一个二维横纵统计表,仅对多行多列数据进行简单汇总,生成数据与原始数据格式一致
多行多列数据简单汇总
Sub 字典和数组简单汇总数据()
Dim arr, brr, dict, i, j, k
arr = [a1].CurrentRegion.Value
Set dict = CreateObject("scripting.dictionary")
ReDim brr(1 To UBound(arr), 1 To UBound(arr, 2))  '返回数组,定义为最大
For i = 2 To UBound(arr)
k = CStr(arr(i, 1)) & CStr(arr(i, 2)) '键
If Not dict.Exists(k) Then  '键不存在,新增resize函数vba
j = j + 1  '同时为brr数组序号和字典对应的值
dict(k) = j
brr(j, 1) = arr(i, 1): brr(j, 2) = arr(i, 2)  '赋值
brr(j, 3) = arr(i, 3): brr(j, 4) = arr(i, 4)
Else
r = dict(k)  '对应brr数组序号
brr(r, 3) = brr(r, 3) + arr(i, 3): brr(r, 4) = brr(r, 4) + arr(i, 4)  '累加
End If
Next
[g1].Resize(1, 4) = Array("产品名称", "型号", "数量", "金额")
[g2].Resize(j, UBound(brr, 2)) = brr  '仅赋值有写入brr的j行数据
End Sub
左侧数据简单汇总C、D两列数据,得到右侧数据
vba代码也可使用字典嵌套数组的形式汇总,但在输出结果时需要遍历字典item,较本例中直接将数组赋值给工作表,显得较为繁琐;且字典内部键值顺序也可能有所改变,较本例中与原数据顺序一致,也有所不足

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。