Excel VBA实现智能合并重复元器件数据(型号去重+数量累加)

Excel VBA实现智能合并重复元器件数据(型号去重+数量累加)

关键词:Excel自动化、VBA数据处理、重复项合并、元器件管理

功能概述

本工具针对电子元器件库存表/采购清单等场景,实现:

  1. 型号列自动识别重复元器件
  2. 智能合并重复项并累加数量
  3. 保留首次出现记录,删除后续重复行
  4. 支持万级数据量快速处理

应用场景

  • 电子元器件库存合并
  • BOM表重复项清理
  • 采购订单数据整合
  • 实验室耗材统计

实现原理

核心算法流程图

是 是 否 是 否 开始 获取最后行号 当前行<=末行? 读取型号/数量 从末行向前扫描 型号相同? 累加数量并删行 继续向上扫描 扫描完成? 更新当前行数量 结束


完整代码

vbnet 复制代码
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难题,欢迎在评论区留言交流~

相关推荐
Python大数据分析@2 小时前
Pandas相比Excel的优势是哪些?
excel·pandas
fengyehongWorld2 小时前
Excel 添加自定义选项卡
excel
斯特凡今天也很帅13 小时前
Excel在保留下拉选项的基础上,通过输入四级目录数据,在一级目录、二级目录、三级目录、五级目录的显示
excel
潜创微科技--高清音视频芯片方案开发16 小时前
2026年对拷线芯片实用对比分析:从需求到选型的全维度指南
音视频·硬件工程
天选硬件打工人1 天前
第二十三篇:【硬件工程师筑基系列 5-2】PCB 设计核心基础 | 叠层设计、焊盘封装与 DFM 可制造性规范
单片机·嵌入式硬件·硬件架构·硬件工程·制造·基带工程
学嵌入式的小杨同学2 天前
STM32 进阶封神之路(三十):IIC 通信深度实战 —— 软件模拟 IIC + 光照传感器(BH1750)全解析(底层时序 + 代码落地)
stm32·单片机·嵌入式硬件·mcu·硬件架构·硬件工程·智能硬件
全栈开发圈2 天前
新书速览|Excel+DeepSeek会计与财务高效办公
语言模型·excel
ew452182 天前
【java】基于hutool实现.Excel导出任意多级自定义表头数据
java·开发语言·excel
SunnyDays10112 天前
使用 Python 在 Excel 中应用数据验证:详细指南
python·excel·数据验证
开开心心就好2 天前
模拟真人手写软件,支持随机调节
运维·服务器·windows·gitee·pdf·开源·excel