如下图,工作簿中共有以下几个工作表,现希望将各张工作表中的数据合并在一起。
1.打开vba编辑器:右键单击任意工作表,选择“查看代码”。
2.输入代码:双击"ThisWorkbook",在代码窗口中输入以下代码:
Sub 合并当前工作簿下的所有工作表()
Dim ws As Worksheet
Dim sh As Worksheet, i%
On Error Resume Next '如遇错误继续运行
Application.ScreenUpdating = False '关闭屏幕刷新
Application.DisplayAlerts = False '禁用警告提示
Worksheets("汇总").Delete '删除原汇总表
Set ws = Worksheets.Add(before:=Sheets(1)) '新建工作表
ws.Name = "汇总" '新建工作表命名为汇总
For Each sh In Sheets: '遍历所有工作表
If sh.Name "汇总" Then '判断工作表是否为汇总表
i = ws.Range("A" & Rows.Count).End(xlUp).Row + 1 '获取汇总表中A列数据区域最后一行的行号+1
sh.UsedRange.Copy '复制分表中的数据
ws.Cells(i, 1).PasteSpecial Paste:=xlPasteAll '粘贴数据
ws.Cells(i, 1).PasteSpecial Paste:=xlPasteColumnWidths '粘贴列宽
End If
Next
Application.DisplayAlerts = True '恢复警告提示
Application.ScreenUpdating = True '开启屏幕刷新
MsgBox "工作表合并完毕"
End Sub
3.运行程序:
点击绿色三角形或按F5,运行程序。
程序运行成功后,会弹出对话框,显示消息如下:
4.删除多余表头:筛选"月份",删除多余行。
5.查看结果
注:若希望代码在下次打开工作簿时可以继续使用,需将工作簿另存为97-2003工作簿或启用宏的工作簿。
领取专属 10元无门槛券
私享最新 技术干货