打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
多行2列数据汇总(数据透视表VBA)

多行2列数据汇总。

今天的内容

下图中的数据,需要根据“仪器名称”来汇总数量,实现该效果的方法有很多,最常用的就是数据透视表了,还可以使用分列汇总功能。

今天涂涂给大家分享下,使用VBA的字典来实现汇总的效果。使用vba来处理,单纯从本例子来看,数据透视表是最快的。表亲们,这里先不说哪种方式实现快啊,这里只是提供解题思路而已。

数据截图

 

数据透视表汇总


◆选中数据源的任一非空单元格,选择【插入】选项卡

◆点击数据透视表,弹出创建数据透视表对话框,位置选择现有工作表

◆选择合适的放置位置,确定

◆将“仪器名称”字段拖入行标签,“数量”字段拖入数值即可

VBA字典汇总


◆将表格另存为xlsm后缀的文件

◆按<Ctrl F11>打开VBE编辑界面,创建模块

◆在模块中写入下记代码,保存,关闭VBE界面

◆创建执行按钮,点击按钮运行代码即可

代码示例

  1. Sub 多行2列()

  2. Dim dic As Object

  3. Dim m As Long, i As Long, k As Long

  4. Dim Arr, Brr

  5. 'dic--创建字典

  6. Set dic = CreateObject('scripting.dictionary')

  7. 'Arr--将数据区域装入数组

  8. Arr = Range('A1:B' & Cells(Rows.Count, 1).End(xlUp).Row)

  9. '重新声明数组Brr

  10. ReDim Brr(1 To UBound(Arr, 1), 1 To 2)

  11. '遍历数组Arr

  12. For i = 2 To UBound(Arr, 1)

  13. '如果字典关键字中不存在Arr(i, 1)

  14. If Not dic.exists(Arr(i, 1)) Then

  15. 'k--计数

  16. k = k 1

  17. '将Arr(i, 1)写入字典

  18. dic(Arr(i, 1)) = k

  19. Brr(k, 1) = Arr(i, 1)

  20. Brr(k, 2) = Arr(i, 2)

  21. Else

  22. '如果字典关键字中存在Arr(i, 1),则把条目m读取出来

  23. m = dic(Arr(i, 1))

  24. '累加

  25. Brr(m, 2) = Brr(m, 2) Arr(i, 2)

  26. End If

  27. Next i

  28. '把数组Brr写入D2单元格区域

  29. [D2].Resize(k, 2) = Brr

  30. End Sub

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
VBA简单入门40:用字典进行多列求和
什么叫做『棋盘法』汇总?
来自【Excel完美论坛】
Excel VBA小程序
字典去重冒泡排序
看完这篇,如果你还不懂VBA字典,那我就没办法了
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服