有没有过这样的崩溃时刻?
每月统计报表,要把十几个甚至几十个工作表的数据,一个个复制粘贴到汇总表中——眼睛盯得发酸,手指点得发麻,还总怕漏复制一行、粘错一列,最后核对数据又要花半小时。
其实不用这么麻烦!今天就给大家分享 1 个 Excel VBA 实用代码,一键就能把工作簿中所有工作表的数据,自动汇总到一张表中,小白也能秒上手,从此告别重复劳动,准时下班不是梦 ✨
先说明适用场景:所有待汇总的工作表,列数、表头顺序必须一致(比如都是“姓名、部门、业绩”三列),这是批量汇总的基础,避免数据错位。
适合场景:各工作表结构完全一致,只需保留第一个工作表的表头,需要区分数据来源(比如汇总12个月的销售明细,表头都是统一的)。
操作步骤超简单,跟着走就行:
Step 1:打开VBA编辑器
打开需要汇总的Excel文件,按下快捷键 Alt + F11,瞬间调出VBA编辑器(不用记复杂路径,快捷键直接搞定)。
Step 2:插入模块
在编辑器左侧“工程资源管理器”中,右键点击当前工作簿的名称(比如“销售报表.xlsx”),选择「插入」→「模块」,此时右侧会出现一个空白的代码编辑区。
Step 3:粘贴代码,运行宏
把下面的代码复制粘贴到空白编辑区,然后按下 F5 键 运行,等待1-2秒(数据量大会稍久),自动生成名为“汇总结果”的新工作表,所有数据已全部汇总完毕!
小提示:运行后如果弹出“宏被禁用”,点击Excel顶部的「启用宏」即可(宏是VBA的运行基础,放心启用)。
Sub 合并工作表()
Dim ws As Worksheet, destWs As Worksheet
Dim lastRow As Long, nextRow As Long, colCount As Long
'新建汇总表并命名
Set destWs = ThisWorkbook.Worksheets.Add
destWs.Name = "汇总结果"
'遍历所有工作表
For Each ws In ThisWorkbook.Worksheets
'跳过汇总表本身
If ws.Name <> destWs.Name Then
'获取当前工作表的有效行数和列数
lastRow = ws.UsedRange.Rows.Count
colCount = ws.UsedRange.Columns.Count
'第一次循环,复制表头并添加“来源工作表”列
If nextRow = 0 And lastRow >= 1 Then
ws.Rows(1).Copy destWs.Rows(1)
destWs.Cells(1, colCount + 1).Value = "来源工作表"
nextRow = 2
End If
'复制数据并标注来源
If lastRow > 1 Then
'复制当前工作表的数据(跳过表头)
ws.Range("A2:" & ws.Cells(lastRow, colCount).Address).Copy _
destWs.Cells(nextRow, 1)
'在最后一列填写来源工作表名称
destWs.Range(destWs.Cells(nextRow, colCount + 1), _
destWs.Cells(nextRow + lastRow - 2, colCount + 1)).Value = ws.Name
'更新下一次粘贴的起始行
nextRow = nextRow + lastRow - 1
End If
End If
Next ws
'自动调整列宽,方便查看
destWs.UsedRange.EntireColumn.AutoFit
MsgBox "汇总已完成!", vbInformation
End Sub
关键注意事项(必看!)
1. 表头统一:所有待汇总工作表的表头(第一行)必须完全一致,列顺序也不能乱,否则会出现数据错位(比如A列是姓名,有的工作表A列是部门,汇总后就会出错)。
2. 跳过空表:如果有的工作表没有数据(空表),代码会自动跳过,不会复制空内容,无需手动删除空表。
3. 数据备份:重要数据建议先备份原文件,避免误操作(虽然代码不会修改原工作表,但多一份备份更安心)。
4. 宏的启用:如果Excel禁用宏,代码无法运行,启用方法:点击顶部「文件」→「选项」→「信任中心」→「信任中心设置」→「宏设置」,选择「启用所有宏」(仅针对信任的文件)。
进阶技巧:代码可重复使用
如果经常需要汇总数据,不用每次都复制代码:
1. 把带有代码的Excel文件保存为「启用宏的工作簿」(后缀为.xlsm);
2. 下次汇总时,打开这个文件,把需要汇总的工作表复制到这个工作簿中,运行对应的宏即可。
其实VBA没有大家想象的那么难,很多时候,一段现成的代码就能解决职场中80%的重复工作。
以前手动汇总需要1小时,现在一键运行10秒搞定,省下的时间喝杯咖啡、整理思路,不香吗?
赶紧收藏起来,下次汇总数据直接用!如果遇到问题,评论区留言,帮你排查解决 ✍️
关注我,后续分享更多Excel VBA实战技巧,让办公效率翻倍!