ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南

[求助] 如何用VBA实现一次性多列数据分类汇总,类似单列数据透视表

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-5-21 22:27 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Hontyu 发表于 2023-5-21 22:13
12年注册的,都不懂得送花,难怪只会提问

怎么送花啊,请教

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-5-21 22:32 | 显示全部楼层
zxsea_7426 发表于 2023-5-21 22:10
加了一个代码,列数多了,速度能快点,单元格操作不再一个一个写入,分表头与数据以及合并单元格三次操作.
...

第一个版本1万行4列,用时690秒,期待这个版本

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-5-21 22:33 | 显示全部楼层
准提部林 发表于 2023-5-21 22:13
一個字典用到底//一列一個數組合併完成//

有教程吗?先行谢过

TA的精华主题

TA的得分主题

发表于 2023-5-21 22:47 | 显示全部楼层
  1. Sub PivotTable()

  2. Dim ws As Worksheet
  3. Dim pt As PivotTable
  4. Dim pf As PivotField
  5. Dim pi As PivotItem
  6. Dim rng As Range
  7. Dim lastRow As Long
  8. Dim lastCol As Long
  9. Dim i As Long
  10. Dim j As Long
  11. Dim keyword As String

  12. '设置关键字
  13. keyword = "a"

  14. '获取当前工作表
  15. Set ws = ActiveSheet

  16. '获取数据范围
  17. lastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row
  18. lastCol = ws.Cells(1, Columns.Count).End(xlToLeft).Column
  19. Set rng = ws.Range("A1", ws.Cells(lastRow, lastCol))

  20. '创建数据透视表
  21. Set pt = ws.PivotTableWizard(TableDestination:=ws.Cells(lastRow + 2, 1), _
  22.     TableName:="PivotTable")

  23. '设置行字段
  24. Set pf = pt.PivotFields("所有")
  25. pf.Orientation = xlRowField

  26. '设置列字段
  27. Set pf = pt.PivotFields("关键字")
  28. pf.Orientation = xlColumnField

  29. '设置值字段
  30. Set pf = pt.PivotFields("值")
  31. pf.Orientation = xlDataField
  32. pf.Function = xlSum
  33. pf.NumberFormat = "#,##0"

  34. '筛选关键字
  35. For i = 1 To pf.PivotItems.Count
  36.     Set pi = pf.PivotItems(i)
  37.     If pi.Name <> keyword Then
  38.         pi.Visible = False
  39.     End If
  40. Next i

  41. '自动调整列宽
  42. ws.Columns.AutoFit

  43. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-5-21 23:02 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
zxsea_7426 发表于 2023-5-21 22:10
加了一个代码,列数多了,速度能快点,单元格操作不再一个一个写入,分表头与数据以及合并单元格三次操作.
...

尴尬了,此版本直接卡死没法运行

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-5-21 23:20 | 显示全部楼层
本帖最后由 ·遁去的一· 于 2023-5-22 00:12 编辑
准提部林 发表于 2023-5-21 22:13
一個字典用到底//一列一個數組合併完成//

ReDim C(1 To Cn), Xrr(1 To Cn), Brr(1 To Rn, 1 To Rn)这句出错了,内存溢出,1万左右数据行,5列,2600行数据时可以正常运行,用时1.7秒

TA的精华主题

TA的得分主题

发表于 2023-5-21 23:33 | 显示全部楼层
·遁去的一· 发表于 2023-5-21 22:32
第一个版本1万行4列,用时690秒,期待这个版本

有一个对单元格一个一个处理的花时间最长

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-5-22 00:36 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-5-22 00:58 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
剑指E 发表于 2023-5-21 20:00
“一次性完成a+任意其它(所有)列为关键字的分类汇总”
这句话啥意思?

谢谢大佬 ,速度最快,是不是最多99999行啊,但是前2列里有空白单元格的包含在统计项了,后面几列的空白单元格就没有纳入统计了,所以数据 不对,能帮查一下吗

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-5-22 01:10 | 显示全部楼层
剑指E 发表于 2023-5-21 20:00
“一次性完成a+任意其它(所有)列为关键字的分类汇总”
这句话啥意思?

经测试是,所有列的数据中只统计第一个出现空白单元格的数据,后面的空白单元格均不统计,能改一下吗,所有空白单元格都要统计
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-16 05:48 , Processed in 0.041546 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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