摘要:在处理财务数据时,我们经常会遇到需要将多个Excel表格合并到一个工作簿中的情况。例如,每个月的工资表或其他类似的表格。手动复制粘贴不仅费时费力,还容易出错。今天,我将分享如何使用DeepSeek和VBA快速合并多个Excel工作簿,并确保每个工作表的名称与源
在处理财务数据时,我们经常会遇到需要将多个Excel表格合并到一个工作簿中的情况。例如,每个月的工资表或其他类似的表格。手动复制粘贴不仅费时费力,还容易出错。今天,我将分享如何使用DeepSeek和VBA快速合并多个Excel工作簿,并确保每个工作表的名称与源工作簿的名称一致。
我是这么提问题的:
Deepseek 答复以下几种方法:
方法一:手动复制粘贴
这种方法最原始,但显然费时费力,我们这里就不详细介绍了。
方法二:使用VBA代码
DeepSeek给出了一个VBA代码示例,可以帮助我们快速合并多个工作簿。以下是具体步骤:
步骤1:准备目标工作簿
1. 创建一个新的Excel工作簿,并命名为“汇总表”。
2. 确保“汇总表”是空的,用于存放合并后的工作表。
步骤2:准备源工作簿
假设你有5个需要合并的工作簿,每个工作簿包含一个或多个工作表。记住这些源数据表要在同一个路径下面。
步骤3:使用VBA代码
1. 打开“汇总表”,按Alt + F11调出VBA编辑器。
2. 在VBA编辑器中,点击“插入”->“模块”,将以下代码复制进去:
vba复制
Sub MergeWorkbooks
Dim sourceFolder As String
Dim fileName As String
Dim sourceWb As Workbook
Dim targetWb As Workbook
Dim ws As Worksheet
Dim targetWs As Worksheet
' 设置目标工作簿(当前工作簿)
Set targetWb = ThisWorkbook
' 输入源文件夹路径
sourceFolder = InputBox("请输入包含源工作簿的文件夹路径:", "文件夹路径")
If sourceFolder = "" Then Exit Sub
' 确保文件夹路径以反斜杠结尾
If Right(sourceFolder, 1) "\" Then sourceFolder = sourceFolder & "\"
' 获取文件夹中的所有Excel文件
fileName = Dir(sourceFolder & "*.xls*")
' 遍历每个文件
Do While fileName ""
' 打开源工作簿
Set sourceWb = Workbooks.Open(sourceFolder & fileName)
' 遍历源工作簿中的每个工作表
For Each ws In sourceWb.Sheets
' 在目标工作簿中创建新工作表
Set targetWs = targetWb.Sheets.Add(After:=targetWb.Sheets(targetWb.Sheets.Count))
targetWs.Name = Replace(fileName, ".xlsx", "") ' 设置工作表名称为源工作簿名称
' 复制数据
ws.UsedRange.Copy
targetWs.Paste
Application.CutCopyMode = False
Next ws
' 关闭源工作簿
sourceWb.Close SaveChanges:=False
' 获取下一个文件
fileName = Dir
Loop
' 提示完成
MsgBox "所有工作簿已合并完成!", vbInformation
End Sub
3. 关闭VBA编辑器,返回Excel。
4. 按Alt + F8,选择MergeWorkbooks宏并运行。
5. 在弹出的对话框中输入包含源工作簿的文件夹路径。
步骤4:解决路径输入问题
如果你在输入文件夹路径时遇到问题,可以使用文件选择对话框来选择文件夹。我当时运行的时候把源数据的路径复制黏贴进去,程序卡住了。所以我就问kimi怎么办?因为deepseek 一直是卡顿中,所以我只好转战kimi。
Kimi 给到我以下改进后的代码:
vba复制
Sub MergeWorkbooks
Dim sourceFolder As String
Dim fileName As String
Dim sourceWb As Workbook
Dim targetWb As Workbook
Dim ws As Worksheet
Dim targetWs As Worksheet
Dim fd As FileDialog
' 创建文件选择对话框
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
' 显示对话框并获取用户选择的文件夹
If fd.Show = -1 Then
sourceFolder = fd.SelectedItems(1) & "\"
Else
MsgBox "未选择文件夹,操作已取消。", vbExclamation
Exit Sub
End If
6. 再次运行宏,这次会弹出一个文件夹选择对话框,你可以直接选择包含源工作簿的文件夹。
7:最后可以成功的实现我们想要的目标。把几个工作薄都合并到一个工作薄里面去了。
最终显示的结果如下:每个sheet的名字是以源文件的工作薄名字命名的。
方法三:使用Power Query
Power Query是Excel的一个强大工具,也可以用来合并多个工作簿。以下是具体步骤:
1. 打开“汇总表”。
2. 点击“数据”选项卡,选择“获取数据”->“来自文件夹”。
3. 选择包含源工作簿的文件夹。
4. Power Query会自动加载文件夹中的所有Excel文件。
5. 选择需要合并的工作表,点击“合并”按钮。
6. 调整合并后的数据格式,点击“关闭并上载”。
我个人觉得power Query 用起来没有VBA方便,所以这里就不做介绍了。
总结
通过以上方法,你可以快速高效地将多个Excel工作簿合并到一个工作簿中,并确保每个工作表的名称与源工作簿的名称一致。希望这些方法能帮助你节省时间和精力,提高工作效率。
来源:花姐是个会计