Excel多表合并不用愁!自用优化版VBA,一键搞定(附完整VBA代码)
- 2026-11-08 15:51:19
Excel多表合并不用愁!自用优化版VBA,一键搞定(附完整VBA代码) 做数据岗、行政岗的朋友,肯定都踩过Excel多表合并的坑——少则三五个表,多则几十上百个,手动复制粘贴不仅熬时间,还总容易漏行、错行,改起来更费劲儿。 以前我也被这个问题困扰了很久,试过不少方法,要么操作复杂记不住,要么插件不稳定容易报错。后来自己摸索着优化了一段VBA代码,用了大半年,亲测稳定高效,今天就把这份自用教程分享给大家,新手也能轻松上手。 如下图,我们有5个excel表需要合并,为方便演示,每个表里面我们列了三行数据。 
如下图,当我们点击按钮后,这5个表瞬间被合并在总表里。 
Private Sub CommandButton1_Click() '作者:办公必杀技 自用优化版(适配多场景数据合并,新增列宽调整、空行清除) '禁用屏幕刷新、警告提示,提升运行速度,避免弹窗干扰操作 Application.ScreenUpdating = False Application.DisplayAlerts = False Dim 总表 As Worksheet Dim 子表 As Worksheet Dim 最后一行 As Long '===================== ' 1. 删除已存在的总表(避免重复创建报错,适配多次合并场景) '===================== On Error Resume Next '忽略删除不存在的“总表”时的报错 Sheets("总表").Delete On Error GoTo 0 '恢复正常报错提示,便于排查问题 '===================== ' 2. 新建总表,放在所有子表后面,方便查找 '===================== Set 总表 = Sheets.Add(After:=Sheets(Sheets.Count)) 总表.Name = "总表" '===================== ' 3. 遍历所有工作表并合并,跳过总表本身 '===================== For Each 子表 In Worksheets If 子表.Name <> "总表" Then '获取总表最后一行的下一行,避免数据重叠 最后一行 = 总表.Cells(总表.Rows.Count, 1).End(xlUp).Row + 1 '===================== ' 核心优化:只保留第一个表的表头,其他表只复制数据 '===================== If 最后一行 = 2 Then '第一次粘贴:带表头(第一个子表的表头作为总表表头) 子表.UsedRange.Copy 总表.Cells(最后一行 - 1, 1) Else '后续粘贴:跳过表头,从第二行开始复制数据 子表.UsedRange.Offset(1).Copy 总表.Cells(最后一行, 1) End If End If Next 子表 '===================== ' 4. 新增优化功能:自动调整列宽、清除空行,提升实用性 '===================== 总表.UsedRange.EntireColumn.AutoFit '自动适配列宽,不用手动拖拽 On Error Resume Next 总表.UsedRange.SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp'清除合并后产生的空行 On Error GoTo 0 '===================== ' 5. 恢复设置并弹窗提示,告知合并结果(新增合并数量统计,更直观) '===================== Application.ScreenUpdating = True Application.DisplayAlerts = True MsgBox "合并完成!" & vbCrLf & "已合并工作表数量:" & Worksheets.Count - 1 & vbCrLf & "已自动调整列宽、清除空行,可直接使用!" End Sub 
如上图,我们第1、2段代码的主要功能是删除旧的总表,新建新的总表 
如上图,第3段代码的主要功能是通过FOR循环,将所有子表的数据复制到总表。 
如上图,第4段的主要功能是自动调整总表的列宽,并清除合并后产生的空行。很多新手运行代码时会遇到「运行时错误 '1004':未找到单元格」,这是因为当总表没有空白单元格时,SpecialCells方法会触发报错。我在代码中加入了On Error Resume Next容错处理,彻底解决了这个问题,就算没有空行也能正常运行,不用手动修改代码。 
如上图,第5段代码的主要功能是恢复之前关闭的excel刷新及弹窗功能,弹窗提示“合并完成!”及合并工作表数量。 以上就是我自用大半年的Excel多表合并VBA教程,不管是3个表、5个表,还是几十上百个表,只要复制这段优化版代码,插入命令按钮,点击一下,瞬间就能完成合并,再也不用手动复制粘贴耗时间、犯错误。 建议大家收藏本文,下次需要合并表格时直接查找,省去重复找代码、改代码的麻烦;也可以转发给经常处理Excel数据的同事、朋友,帮大家提升工作效率,告别数据合并的烦恼~ 如果运行过程中遇到报错、表头错乱、数据遗漏等问题,评论区留言,我会一一回复解答,帮你顺利搞定多表合并,新手也能轻松上手!
一、功能简介


二、VBA完整代码
三、代码解读




四、总结
本文来自网友投稿或网络内容,如有侵犯您的权益请联系我们删除,联系邮箱:wyl860211@qq.com 。