Excel VBA实现智能合并重复元器件数据(型号去重+数量累加)
关键词:Excel自动化、VBA数据处理、重复项合并、元器件管理
功能概述
本工具针对电子元器件库存表/采购清单等场景,实现:
- 按型号列自动识别重复元器件
- 智能合并重复项并累加数量
- 保留首次出现记录,删除后续重复行
- 支持万级数据量快速处理
应用场景
- 电子元器件库存合并
- BOM表重复项清理
- 采购订单数据整合
- 实验室耗材统计
实现原理
核心算法流程图
完整代码
Sub MergeDuplicateComponents()
On Error Resume Next ' 基础错误处理
'【参数配置区】可根据需求修改
Const TYPE_COL As Integer = 3 ' 型号所在列(C列)
Const QTY_COL As Integer = 6 ' 数量所在列(F列)
Const START_ROW As Integer = 2 ' 数据起始行
Dim ws As Worksheet
Dim lastRow As Long, i As Long, j As Long
Dim currentType As String, currentQty As Long
Set ws = ActiveSheet
lastRow = ws.Cells(ws.Rows.Count, TYPE_COL).End(xlUp).Row
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
' 从第二行开始向上处理
i = START_ROW
Do While i <= lastRow
currentType = ws.Cells(i, TYPE_COL).Value
currentQty = ws.Cells(i, QTY_COL).Value
' 从最后一行向下检查
For j = lastRow To i + 1 Step -1
If ws.Cells(j, TYPE_COL).Value = currentType Then
currentQty = currentQty + ws.Cells(j, QTY_COL).Value
ws.Rows(j).Delete
lastRow = lastRow - 1
End If
Next j
' 更新当前行的数量
ws.Cells(i, QTY_COL).Value = currentQty
i = i + 1
Loop
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
MsgBox "处理完成!共合并" & lastRow - START_ROW + 1 & "条有效记录", vbInformation
End Sub
代码说明:
初始化设置:获取活动工作表并确定数据最后一行
从第二行开始逐行处理(i循环)
对每个元器件类型,从最后一行向前检查重复项(j循环)
发现重复时累加数量并删除重复行
更新当前行的汇总数量
使用双循环结构确保完整遍历所有数据
添加了屏幕更新和计算控制以优化性能
使用方法:
按Alt+F11打开VBA编辑器
插入新模块并粘贴代码
返回Excel运行宏"MergeDuplicateComponents"
确保数据格式符合要求(第3列为型号,第6列为数量)
注意事项:
数据必须从第2行开始
第一行会被自动识别为标题行
合并后保留最上方出现的记录
原始数据建议先备份
代码主要实现以下功能
智能行号跟踪
倒序删除避免遗漏
数量自动累加
高效数据处理机制
执行效果
- 所有相同型号的记录会被合并到第一个出现的位置,数量自动求和,后续重复行自动删除。
处理前如图
处理后如图
可以看出,22R和1k的电阻进行了合并,且数量进行了相加。
**如果觉得这个解决方案有帮助,欢迎点赞❤️收藏⭐️关注✅!如果有其他Excel难题,欢迎在评论区留言交流~