解放双手,ExcelVBA自动化办公,批量合并Excel数据如此简单!

数据我来大话侃 2024-09-07 21:40:40

在Excel处理多个表数据时,合并数据是一项繁琐的任务,尤其是当你需要手动复制粘贴时。这种工作不仅耗时,还容易出错。但是,借助 Excel VBA 的强大功能,我们可以编写一个脚本,自动将多个 sheet 表中的数据合并到一个新建的工作表中。

接下来,在本节中,我将详细介绍如何编写这样的 VBA 脚本,通过学习该案例,你将掌握如何在多表之间自动合并数据,并通过一些关键的 VBA 语法和逻辑,使你的 Excel 工作更高效、更智能。

数据演示

如下为一张销售订单数据Excel工作簿,内含"1日","2日","3日"共三个sheet表,现在需要将这三个sheet表合并为一个sheet表,并且,当有新增加的sheet表时,也可以继续合并,常规做法是一个一个sheet表复制、粘贴,倘若有上百个这样的sheet表,处理效率就很慢。

VBA准备工作

接下来,我将使用Excel VBA编写代码进行批量合并,要使用Excel VBA功能,需要在自定义功能区中勾选"开发工具"选项,默认在主页不显示"开发工具"选项,需要手动勾选。首先在Excel工作簿中点击“文件”选项。

然后在对应的菜单下点击“选项”按钮。

打开Excel选项,点击“自定义功能区”,然后勾选“开发工具”,点击“确定”按钮。

在主页功能区即可看到已经加载出“开发工具”选项。

编写VBA

在 Excel 中点击 "开发工具" 选项卡,点击 "Visual Basic" 按钮,打开 VBA 编辑器,VBA代码都是写在VBA 编辑器运行。

如下即为VBA 编辑器的操作界面。

在 VBA 编辑器窗口中,右键 "VBAProject(销售订单数据.xlsx)" ,依次点击 "插入" -> "模块",在插入的模块中编写 VBA 代码。

如下为编写的VBA代码,代码相对比较长,有一定的学习门槛和难度,如果看不明白的话,可以直接复制粘贴使用。

Sub 合并数据到新表() Dim ws As Worksheet Dim targetSheet As Worksheet Dim lastRow As Long Dim nextRow As Long Dim i As Integer ' 删除之前合并的数据表(如果存在) On Error Resume Next Application.DisplayAlerts = False Set targetSheet = ThisWorkbook.Sheets("合并结果") If Not targetSheet Is Nothing Then targetSheet.Delete End If Application.DisplayAlerts = True On Error GoTo 0 ' 新建一个Sheet用于存储合并后的数据 Set targetSheet = ThisWorkbook.Sheets.Add targetSheet.Name = "合并结果" ' 假设第一张表有表头,复制表头到目标Sheet For Each ws In ThisWorkbook.Sheets If ws.Name <> targetSheet.Name Then ws.Rows(1).Copy Destination:=targetSheet.Rows(1) Exit For End If Next ws ' 遍历所有工作表并合并数据 nextRow = 2 ' 设置从第2行开始合并数据(因为第1行为表头) For Each ws In ThisWorkbook.Sheets If ws.Name <> targetSheet.Name Then lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row ws.Range("A2:A" & lastRow).EntireRow.Copy Destination:=targetSheet.Cells(nextRow, 1) nextRow = targetSheet.Cells(targetSheet.Rows.Count, 1).End(xlUp).Row + 1 End If Next ws MsgBox "数据合并完成!", vbInformationEnd SubVBA运行

将VBA代码复制粘贴到到 VBA 编辑器中,点击 "运行" 按钮,或按下 F5 键运行该脚本。

返回 Excel 工作簿,由结果可以看到,所有的 sheet 表数据均合并至新的 "合并结果" 表中。

为了方便有新增的sheet表进行数据合并,可以添加一个表单控件,点击"开发工具",插入一个表单控件。

点击宏名称用于指定宏,然后点击确定按钮。

如下是设置后的表单控件,只要点击表单控件"开始合并",即可一键进行数据合并。

保存VBA

为了将编写的VBA可以永久保存,可以将工作簿保存为 *.xlsm 格式,点击"文件"选项,在保存类型中选择"Excel启用宏的工作簿",即可保存宏。

如果有新增的sheet表,比如这里新增"4日","5日"两个sheet表,仅需点击表单控件"开始合并",即可一键合并。

如下红色标记的地方,即为新增的sheet表批量合并后的结果。

以上,我们见识到了 VBA 在处理多表数据合并中的强大能力。无论是对于需要频繁处理数据报表的日常工作,还是面对复杂的数据管理任务,这段代码都可以为你提供极大的便利。

希望通过本节的学习,让你对VBA的应用有更深入的理解。如果需要获取本节的数据文件,可在后台私信我获取,一同沟通和学习数据分析知识。

0 阅读:56