zz1180 发表于 2017-2-3 14:57

用ExcelVBA实现:汇总一个Excel内的相同ID的数量之和




用ExcelVBA实现:汇总一个Excel内的相同ID的数量之和


最简化后的表格:
       A             B         C         D
1   订单号   产品ID    数量      备注
2   PO0001   ID01       8       备注说明1
3   PO0002   ID03       6       备注说明2
4   PO0002   ID01       3       备注说明3
5   PO0003   ID02       7       备注说明4
6   ……         ……       ……      ……

需要汇总 产品ID相同的产品,数量之和。用VBA实现,里面放一个按钮。
Sub zz()
    Dim d, ar
    Set d = CreateObject("Scripting.Dictionary") '新建一个字典
    ar = Range("A1").CurrentRegion '取A1所在区域(即A1:F6)到数组ar中
    For i = 2 To UBound(ar) '从第2行到最后一行循环
      d(ar(i, 3) & "," & ar(i, 2) & "," & ar(i, 4)) = d(ar(i, 3) & "," & ar(i, 2) & "," & ar(i, 4)) + Val(ar(i, 5)) '把产品ID,产品名称,产品编码作为key存储
    Next
    For Each k In d.keys '遍历字典中每一个key
      Sheets("Sheet1").Cells(2 + n, 1).Resize(1, 3) = Split(k, ",") '填写前三列(产品ID,产品名称,产品编码)
      Sheets("Sheet1").Cells(2 + n, 4) = d(k) '预领用数量
      n = n + 1 '下一行
    Next
    With Sheets("Sheet1")
      ..CurrentRegion.Sort ., 1, Header:=xlGuess '按照产品ID排序
    End With
End Sub




页: [1]
查看完整版本: 用ExcelVBA实现:汇总一个Excel内的相同ID的数量之和