Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >VBA: 一键合并重复数据,实现 Excel 行合并求和

VBA: 一键合并重复数据,实现 Excel 行合并求和

作者头像
Exploring
发布于 2025-04-20 16:03:55
发布于 2025-04-20 16:03:55
11900
代码可运行
举报
运行总次数:0
代码可运行

文章背景: 在日常的数据处理中,我们经常会遇到这样的场景:一列是分类或名称,另一列是数值,有重复项,需要对这些重复项进行合并并求和。比如:

我们希望自动处理成这样:

今天给大家分享一个实用的 VBA 脚本,只需选择区域,点击运行,即可实现智能合并求和。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
OptionExplicit

SubCombineRows()
    ' 智能合并重复行并求和
    DimWorkRngAsRange, iAsInteger
    DimDicAsVariant
    DimarrAsVariant

    ' 让用户选择区域
    SetWorkRng = Application.Selection
    SetWorkRng = Application.InputBox("Range", "选择区域", WorkRng.Address, Type:=8)

    ' 创建字典对象
    SetDic = CreateObject("Scripting.Dictionary")
    
    ' 将选中区域转为二维数组
    arr = WorkRng.Value

    ' 遍历每一行,把第一列作为 Key,第二列进行累加
    Fori = 1ToUBound(arr, 1)
        Dic(arr(i, 1)) = Dic(arr(i, 1)) +arr(i, 2)
    Next

    ' 更新界面前先关闭屏幕刷新,提高效率
    Application.ScreenUpdating = False

    ' 清空原区域
    WorkRng.ClearContents

    ' 把字典里的结果写回 Excel
    WorkRng.Range("A1").Resize(Dic.Count, 1) = Application.WorksheetFunction.Transpose(Dic.Keys)
    WorkRng.Range("B1").Resize(Dic.Count, 1) = Application.WorksheetFunction.Transpose(Dic.Items)

    ' 恢复屏幕刷新
    Application.ScreenUpdating = True
EndSub

(1) 对于arr = WorkRng.Value,Excel 的 Range 一旦包含多个单元格,返回的就是从 (1,1) 开始的二维数组,读取速度极快,适合大量数据处理。

(2) 借助字典结构自动去重,通过 Key 累加对应 Value,实现聚合求和。

参考资料:

[1] [Ready to Use 101 Powerful Excel VBA Code Just Copy - Paste - Run (For Functional Users)]

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-04-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据处理与编程实践 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
VBA字典(详解,示例)「建议收藏」
如果对上面水果种类进行计数:countifs,只需要将分类汇总的值改为数值1即可,每出现一次‘+1’
全栈程序员站长
2022/07/22
6.4K1
VBA字典(详解,示例)「建议收藏」
VBA Excel总表以某列数据为基础拆分为独立文件的表,也可以拆分为独立的sheet表不导出!!
VBA Excel总表以某列数据为基础拆分为独立文件的表,也可以拆分为独立的sheet表不导出!!
办公魔盒
2019/07/22
1.7K0
VBA与数据库——简化程序编写-汇总
我们在使用VBA处理Excel数据的时候,很多时候就是对数据进行分类汇总、查找等等。一般这种功能都是使用字典来实现,比如汇总数据功能。
xyj
2021/06/22
1.3K0
VBA与数据库——简化程序编写-汇总
ExcelVBA字典的输出
'练习字典的输出看代码吧 Sub 字典输出() Dim dic As Object, arr() Set dic = CreateObject("scripting.dictionary") ReDim arr(10) 'key是一个数字,item是一个一维数组, For M = 1 To 10 For i = 0 To UBound(arr) arr(i) = "k" & M & "--" & i
哆哆Excel
2022/10/31
9310
Excel VBA 通过字典进行数据计数/求和
字典的计数/求和都是通过利用,字典keys键的唯一性进行统计,当key键出现相同时进行数量的加一或者进行keys键的值求和!
办公魔盒
2023/03/08
2.6K0
Excel VBA 通过字典进行数据计数/求和
ExcelVBA拆分之一簿一表_to_一簿多表使用演示
哆哆Excel
2023/09/09
2730
ExcelVBA拆分之一簿一表_to_一簿多表
哆哆Excel
2023/09/09
2610
ExcelVBA拆分之一簿一表_to_一簿多表
ExcelVBA拆分_一簿一表_to_多簿一表
哆哆Excel
2023/09/09
2750
ExcelVBA拆分_一簿一表_to_多簿一表
VBA:基于指定列删除重复行
文章背景:在工作生活中,有时需要进行删除重复行的操作。比如样品测试时,难免存在复测数据,一般需要保留最后测试的数据。之前通过拷贝行的方式保留最后一行的数据(参见文末的延伸阅读1),但运行效率较低。目前通过借助数组和字典达到删除重复行的效果。
Exploring
2022/12/18
3.6K0
VBA:基于指定列删除重复行
常用功能加载宏——拆分工作表
有合并工作表,自然也离不开拆分工作表,将一个总表,按照某一列的内容拆分为多个工作表,然后可以再结合前面的一个工作簿的工作表另存为工作簿功能,就可以生成多个工作簿进行分发了:
xyj
2020/07/28
2.5K0
常用功能加载宏——拆分工作表
ExcelVBA字典用法之按列拆分工作表
Set dic= CreateObject("Scripting.Dictionary")
哆哆Excel
2022/10/25
1.3K0
ExcelVBA字典用法之按列拆分工作表
Excel VBA银行发放超过1W元的数据拆分
Set dic = CreateObject("Scripting.Dictionary")
哆哆Excel
2022/10/31
4350
Excel VBA在一个工作簿内把总表拆分多个工作表
Dim title_rng As Range, wb As Object, dic1 As Object
哆哆Excel
2022/10/25
2.7K0
Vba菜鸟教程[通俗易懂]
官方文档:https://docs.microsoft.com/zh-cn/office/vba/api/overview/language-reference 代码完成后:工具-vbaproject属性-保护-查看时锁定-密码
全栈程序员站长
2022/09/05
17.6K0
Vba菜鸟教程[通俗易懂]
Excel应用实践22: 比较并合并工作表
有两个工作表,均含有相同的数据,但最后一列名称和产品的数量不同,如下图1和图2所示。
fanjy
2019/10/22
7620
Excel应用实践22: 比较并合并工作表
Excel VBA一键整理工资表,并进行分类新建工作簿、加密
Dim arrA, arrB, col_a, col_b, row_a, d, i, Rng As Range, ifile As String
哆哆Excel
2022/10/25
5200
VBA用字典批量查找社保数据
【问题】我们知道社保导出的数据是很多合并的单元格,如果要查找一个数据都要找很久,如果数量多了更多费时,基于以上问题,特用VBA设计一个批量查找的程序。
哆哆Excel
2022/10/25
7360
VBA用字典批量查找社保数据
Excel VBA编程
在Excel中,数据只有文本,数值,日期值,逻辑值和错误值五种类型。但是在VBA中,数据类型跟Excel不完全相同。根据数据的特点,VBA将数据分为布尔型(boolean),字节型(byte),整数型(integer),单精度浮点型(single),双精度浮点型(double),货币型(currency),小数型(decimal),字符串型(string),日期型(date),对象型等等
全栈程序员站长
2022/08/11
46.6K0
Excel VBA编程
VBA:正则表达式(7) -数据整理
需求:数据保存在A列中,数据组之间使用全角逗号(,)分隔,整理之后需要将每组数据开始的圆括号部分移到末尾,并合并相同的全角方括号部分(【】)的内容。实际效果见B列。
Exploring
2023/10/04
4000
VBA:正则表达式(7) -数据整理
VBA程序:在Excel中生成奇数阶魔方
大家都知道魔方,因为经常会遇到它。魔方是正方形网格,它的最小尺寸为3×3。魔方中的整数只出现一次,所有单元格都填充数字。水平行、垂直列以及主对角线和次对角线的数字加起之和都相同。这个数字和就叫做魔法常数。
fanjy
2022/06/04
1K0
VBA程序:在Excel中生成奇数阶魔方
相关推荐
VBA字典(详解,示例)「建议收藏」
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验