今天我们来聊聊一个超级实用的场景——数据汇总。公司每个月都有几十个表格需要汇总到一起,每次用复制粘贴简直要崩溃,有没有简单一点的方法?当然有啦!用 VBA 来汇总数据,轻松一键搞定!
不管你的数据是分布在多个工作表还是多个工作簿中,只需要几行,就能快速完成汇总,既高效又专业!
一、适用场景:快速汇总的典型需求
在日常工作中,数据汇总是一个非常常见的任务,比如:
销售数据汇总:将多个区域的销售报表整合到一张总表中,方便统计分析。
财务报表汇总:每个月的财务数据需要汇总到一个年度总表中。
项目数据整理:将不同部门或项目的进度数据整合成一张表,快速生成报告。
如果手动复制粘贴这些数据,不仅浪费时间,还容易出错。而用 VBA,不管是 10 张表还是 100 张表,只需几秒钟就能完成,简直是效率神器!
二、操作步骤:用 VBA 快速完成汇总
1. 启用开发者工具
打开 ,点击【文件】->【选项】。
在弹出的窗口中选择【自定义功能区】,勾选右侧的【开发工具】。
点击确定,你就可以在菜单栏看到【开发工具】选项卡啦!
2. 打开 VBA 编辑器
按下快捷键 Alt + F11 打开 VBA 编辑器,然后点击【插入】->【模块】,新建一个模块用来编写代码。
3. 编写代码
以下是一段 VBA 代码,能够快速汇总所有工作表中的数据到一张“汇总表”中。这段代码特别适合处理多张表结构相同的数据,比如每个工作表都有相同的列,只需要将行汇总到一起。
Sub 快速完成汇总()
' 定义变量
Dim ws As Worksheet
Dim 汇总表 As Worksheet
Dim 最后一行 As Long
Dim 汇总行 As Long
' 创建汇总表(如果不存在,则新建)
On Error Resume Next
Set 汇总表 = ThisWorkbook.Sheets("汇总表")
If 汇总表 Is Nothing Then
Set 汇总表 = ThisWorkbook.Sheets.Add
汇总表.Name = "汇总表"
End If
On Error GoTo 0
' 清空汇总表内容
汇总表.Cells.Clear
汇总表.Cells(1, 1).Value = "汇总结果" ' 设置标题行的示例(可根据实际需求调整)
汇总行 = 2 ' 从第二行开始填充数据
' 遍历每张工作表
For Each ws In ThisWorkbook.Sheets
' 跳过“汇总表”自身
If ws.Name <> "汇总表" Then
' 获取当前工作表的最后一行
最后一行 = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
' 复制数据到汇总表
If 最后一行 > 1 Then ' 确保当前工作表有数据
ws.Rows("2:" & 最后一行).Copy Destination:=汇总表.Cells(汇总行, 1)
' 更新汇总表的下一行起点
汇总行 = 汇总表.Cells(汇总表.Rows.Count, 1).End(xlUp).Row + 1
End If
End If
Next ws
' 自动调整列宽
汇总表.Columns.AutoFit
' 提示完成
MsgBox "数据汇总完成!", vbInformation
End Sub
4. 运行代码
在 VBA 编辑器中,按 F5 或点击【运行】按钮执行代码。
打开 Excel,看看是不是生成了一张名为“汇总表”的工作表,所有其他工作表中的数据都已经汇总到这里了!
【注意】
代码默认跳过了名为“汇总表”的工作表,避免将汇总数据重复复制回自己。上述代码假设每个表的标题行在第 1 行,数据从第 2 行开始。如果你的数据结构不同,可以调整 Rows("2:" & 最后一行) 中的数字。