乐于分享
好东西不私藏

【Excel VBA 实战】一键批量合并多个工作表,自动汇总不重复

【Excel VBA 实战】一键批量合并多个工作表,自动汇总不重复

还在手动复制粘贴,把十几个Sheet合并成一张总表?销售日报、门店报表、分部门数据、月度台账……手动合并1小时,VBA只需要1秒今天教你用一段代码,一键汇总所有工作表,自动去重、保留格式、不乱行不乱列。


🎯 你将获得的效果

  • 一键把当前文件所有Sheet合并到一张总表
  • 自动跳过表头,只合并数据行
  • 支持重复数据自动去除
  • 合并后自动排序、自动调整列宽
  • 不破坏原表,安全不覆盖

🚀 核心VBA代码(直接复制可用)

Alt+F11 打开VBA → 插入模块 → 粘贴:

Sub 批量合并所有工作表并去重()    Dim ws As Worksheet, wsSum As Worksheet    Dim lastRow As Long, sumRow As Long    Dim colCount As Integer    Dim dic As Object    Set dic = CreateObject("Scripting.Dictionary")    '新建汇总表    On Error Resume Next    Application.DisplayAlerts = False    Sheets("汇总总表").Delete    Application.DisplayAlerts = True    On Error GoTo 0    Set wsSum = Sheets.Add(After:=Sheets(Sheets.Count))    wsSum.Name = "汇总总表"    sumRow = 1    '遍历所有工作表    For Each ws In Worksheets        If ws.Name <> "汇总总表" Then            If sumRow = 1 Then                '复制表头                ws.Rows(1).Copy wsSum.Rows(sumRow)                sumRow = sumRow + 1                colCount = ws.UsedRange.Columns.Count            End If            '复制数据行            lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row            If lastRow >= 2 Then                ws.Range(ws.Cells(21), ws.Cells(lastRow, colCount)).Copy _                wsSum.Cells(sumRow, 1)                sumRow = sumRow + lastRow - 1            End If        End If    Next ws    '去重(以第1列为唯一标识)    With wsSum        lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row        For i = lastRow To 2 Step -1            keyStr = .Cells(i, 1).Value            If dic.Exists(keyStr) Then                .Rows(i).Delete            Else                dic.Add keyStr, i            End If        Next i    End With    '自动调整列宽    wsSum.UsedRange.EntireColumn.AutoFit    MsgBox "合并完成!" & Chr(13& "共合并 " & Sheets.Count - 1 & " 个表" & Chr(13& "去重后共 " & wsSum.Cells(Rows.Count, 1).End(xlUp).Row - 1 & " 条数据", vbOKOnly    Set dic = NothingEnd Sub

📝 3步傻瓜式操作

  1. 准备数据
    – 把所有要合并的表放在同一个Excel文件– 所有表结构一致:表头相同、列顺序相同– 第一列作为唯一标识(如编号、姓名、单号)
  2. 粘贴代码
    – 按 Alt+F11– 插入 → 模块– 粘贴上面代码,直接运行
  3. 一键合并
    – 运行宏:批量合并所有工作表并去重– 自动生成「汇总总表」,完成去重+整理

💡 代码核心逻辑

  • 自动新建汇总总表,不污染原数据
  • 只复制一次表头,避免重复标题行
  • 用字典快速去重,速度比删除重复项快几倍
  • 自动适配列数,自动调整列宽,打开即用

⚠️ 必看注意事项1. 表结构必须统一:列数、表头、顺序必须一致2. 去重依据:默认按第一列去重,可自行修改列号3. 启用宏:打开文件必须启用宏,否则代码不执行4. 数据备份:重要文件先备份,避免误操作

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » 【Excel VBA 实战】一键批量合并多个工作表,自动汇总不重复

猜你喜欢

  • 暂无文章