ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的酷贴 > Excel VBA > 如何分类汇总进货以及退货数量

如何分类汇总进货以及退货数量

作者:绿色风 分类: 时间:2022-08-18 浏览:87
楼主
xmyjk
Q:如何将需要将系统导出的进货和退货情况的数据,整理汇总到固定格式的汇总报表。

A:问题其实是一个多条件汇总的问题,运用字典来和数组来汇总,并使用IF判断区分是进货还是退货来汇总,代码如下:
  1. Option Explicit

  2. Sub samesum2()
  3. Dim i As Long, n As Long, arr, brr(), nm As Long, xh As Long, X As Long
  4. Dim d

  5. Set d = CreateObject("Scripting.Dictionary")
  6. n = Worksheets(2).[a65536].End(xlUp).Row
  7. arr = Worksheets(2).Range("a2:j" & n)

  8. nm = 0
  9. For i = 1 To UBound(arr)
  10.    If Not (d.exists(arr(i, 6) & "|" & arr(i, 5) & "|" & arr(i, 7))) Then
  11.       nm = nm + 1
  12.       ReDim Preserve brr(1 To 11, 1 To nm)
  13.       d(arr(i, 6) & "|" & arr(i, 5) & "|" & arr(i, 7)) = nm
  14.       If arr(i, 2) = "进货单" Then
  15.          brr(1, nm) = arr(i, 6): brr(2, nm) = arr(i, 5): brr(3, nm) = arr(i, 7)
  16.          brr(4, nm) = arr(i, 8): brr(5, nm) = "": brr(6, nm) = arr(i, 10):
  17.          brr(7, nm) = "": brr(8, nm) = "": brr(9, nm) = ""
  18.          brr(10, nm) = 0: brr(11, nm) = 0
  19.       Else
  20.          brr(1, nm) = arr(i, 6): brr(2, nm) = arr(i, 5): brr(3, nm) = arr(i, 7)
  21.          brr(4, nm) = 0: brr(5, nm) = "": brr(6, nm) = 0:
  22.          brr(7, nm) = "": brr(8, nm) = "": brr(9, nm) = ""
  23.          brr(10, nm) = arr(i, 8): brr(11, nm) = arr(i, 10)
  24.       End If
  25.    Else
  26.       xh = d(arr(i, 6) & "|" & arr(i, 5) & "|" & arr(i, 7))
  27.       If arr(i, 2) = "进货单" Then
  28.          brr(4, xh) = brr(4, xh) + arr(i, 8): brr(6, xh) = brr(6, xh) + arr(i, 10)
  29.       Else
  30.          brr(10, xh) = brr(10, xh) + arr(i, 8): brr(11, xh) = brr(11, xh) + arr(i, 10)
  31.       End If
  32.    End If
  33. Next

  34. X = Worksheets(1).[b65536].End(3).Row
  35. Worksheets(1).Range(Cells(7, 2), Cells(X, 12)).ClearContents
  36. Worksheets(1).[b7].Resize(UBound(brr, 2), UBound(brr, 1)) = Application.Transpose(brr)

  37. Set d = Nothing '释放对象变量
  38. Erase arr, brr '释放数组
  39. End Sub

汇总.rar
2楼
海洋之星
研究,教我VBA吧,

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap