Excel VBA 按用户ID与类别汇总大型数据集的技术方案咨询
数据汇总需求实现方案
下面提供三个可直接落地的方案,按上手难度从低到高排列:
方案1:Power Query实现(最推荐,零代码、不破坏原数据)
15000行数据处理耗时在10秒以内,完全满足需求:
- 操作步骤:
- 选中全量数据区域,点击「数据」选项卡→「从表格/区域」,确认表头识别正确后导入Power Query编辑器
- 按住Ctrl同时选中「ID」和「类别」两列,右键选择「分组依据」
- 在弹出的设置窗口中,操作选择「求和」,依次将所有48个月度数据列添加为汇总列,汇总后的列名可保持和原列一致
- 点击「关闭并上载」,即可自动生成汇总后的新表,自动实现每个ID+类别唯一对应一行的效果,每个ID最多保留5行
- 优势:原数据更新后,只需要在生成的汇总表上右键选择「刷新」即可同步更新结果,不需要重复操作
方案2:数据透视表实现(适合熟悉透视表操作的用户)
- 操作步骤:
- 选中全量数据,插入数据透视表
- 行区域依次拖入「ID」、「类别」字段,值区域拖入所有月度数据字段,将每个值字段的汇总方式设置为「求和」
- 进入「数据透视表设计」选项卡,设置报表布局为「以表格形式显示」、「重复所有项目标签」,关闭行/列分类汇总和总计,即可得到符合要求的汇总结果
方案3:SQL查询实现(适合批量处理场景)
你之前的SQL思路只需要调整查询语句即可实现,参考语句如下,替换对应表名、列名即可运行:
SELECT ID, 类别, SUM(月度列1) AS 月度列1, SUM(月度列2) AS 月度列2, -- 按上述格式补全剩余46个月度数据列的求和逻辑 SUM(月度列48) AS 月度列48 FROM [你的工作表名称$] GROUP BY ID, 类别 ORDER BY ID, 类别
执行查询后直接导出结果即可,数据处理效率很高。
注:你最初构思的逐行定位、求和、删重复行的方案不推荐,操作效率低且容易误修改原数据,上述三个方案的容错率和效率都更高。
内容的提问来源于stack exchange,提问作者Shaves
相关产品推荐
相关产品推荐

