excel图表怎么合并多个工作簿中的数据
发布时间:2022-05-15 12:32:04
我有超过5 个具有相同格式的Excel文件,它们的列标题相同,并且都放置在同一文件夹,有什么快速的方法将它们合并到一个单独的Excel文件的一个工作表中?
假设工作簿文件结构如下所示。
其中,在文件夹“要合并的工作簿文件”中,有3个示例工作簿文件“测试1.xls、测试2.xls、测试3.xls”,将它们合并到工作簿“合并.xls”中。
在“合并.xls”工作簿中,有三个工作表。其中,“设置”工作表中的单元格B2中的数据为每个工作簿中想要合并的工作表名,这里假设每个工作簿中的工作表名相同;单元格B3为要合并的数据开始的行号。
在“导入工作簿名”工作表中将放置合并的工作簿的名称。
“合并工作表”就是我们要放置合并的数据的工作表。
完整的VBA代码如下:
‘ 放置导入工作簿名称的工作表
Private Const importedSheet AsString = “导入工作簿名”
‘放置合并数据的工作表
Private Const combinedSheet AsString = “合并工作表”
‘ 放置导入工作簿名称的行号
Private importPtr As Long
Sub main()
Dim response As Variant
response = MsgBox(“想要运行合并程序吗?” & vbCr & _
“这将擦除” & combinedSheet & “工作表中已前合并的数据”, _
vbYesNoCancel + vbDefaultButton3 +vbQuestion, “合并处理”)
If response = vbYes Then
Call selectXls
End If
End Sub
Private Sub selectXls()
‘ 合并数据的工作簿
Dim thisWb As Workbook
‘ 包含工作簿完整路径和文件名的数组
Dim xlsFiles As Variant
‘ 当前的工作簿文件路径和文件名
Dim xls As Variant
‘ 工作簿文件中(通用的)工作表名
Dim xlsCommonSheet As String
‘ 复制数据开始的行号
Dim startRowCopy As Long
‘ 粘贴数据开始的行号
Dim pastePtr As Long
On Error GoTo genericHandler
‘ 帮助加快代码处理速度
Application.EnableCancelKey = False
Application.Calculation =xlCalculationManual
xlsCommonSheet =Range(“Sheet_Name_to_Combine”)
startRowCopy = Range(“startRow”)
Set thisWb = Workbooks(ThisWorkbook.Name)
xlsFiles = Application.GetOpenFilename( _
“Micosoft Excel工作簿(*.xls*), *.xls*”, , _
“选择要合并的文件”, , True)
Application.ScreenUpdating = False
‘ 如果用户没有点击取消按钮
If IsArray(xlsFiles) Then
Sheets(combinedSheet).Select
pastePtr = startRowCopy
‘重置 & 清除数据
importPtr =
thisWb.Sheets(importedSheet).Cells.Clear
thisWb.Sheets(combinedSheet).Rows(pastePtr & “:” &Application.Rows.Count).Clear
For Each xls In xlsFiles
If thisWb.FullName <> xlsThen
Call processXls(pastePtr, xls,thisWb, xlsCommonSheet, startRowCopy)
End If
Next xls
MsgBox “处理成功”, vbInformation + vbOKOnly,”合并程序”
End If
Exit Sub
genericHandler: ‘ 错误处理
thisWb.Activate
Call resetDefault
MsgBox “错误号: ” & Err.Number & vbCr & _
“错误说明: ” & _
Err.Description, vbInformation +vbOKOnly, _
“合并工作簿错误报告”
End Sub
Private Sub processXls(ByRefpastePtr As Long, ByVal xls As Variant, _
ByVal thisWb AsWorkbook, _
ByVal xlsCommonSheet AsString, ByVal startRowCopy As Long)
‘ 打开的工作簿对象
Dim openWb As Workbook
‘ 工作表中最后一个数据单元格所在的行
Dim lastRowx As Long
‘ 打开工作簿
Workbooks.Open (xls)
Set openWb = Workbooks(ActiveWorkbook.Name)
With openWb.Sheets(xlsCommonSheet)
.Select
lastRowx = lastRow()
If lastRowx > Then
.Rows(startRowCopy &”:” & lastRow).Copy _
thisWb.Sheets(combinedSheet).Range(“A” & pastePtr)
pastePtr = pastePtr + (lastRowx -startRowCopy) + 1
‘ 导入数据的工作簿名
importPtr = importPtr + 1
thisWb.Sheets(importedSheet).Range(“A”& importPtr) = openWb.Name
End If
End With
‘ 关闭工作簿
Workbooks(openWb.Name).CloseSaveChanges:=False
End Sub
Private Function lastRow() AsLong
lastRow =
If WorksheetFunction.CountA(Cells) > Then
‘按行向后搜索
lastRow =Cells.Find(What:=”*”, After:=[a1], _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
End If
End Function
Private Sub resetDefault()
‘ 重置应用程序屏幕刷新和计算模式
Application.ScreenUpdating = True
Application.Calculation =xlCalculationAutomatic
End Sub
运行main过程,弹出如下所示的对话框。
选择“是”按钮,弹出如下所示的选择文件对话框。
导入到要合并的工作簿所在的文件夹,选择要合并的工作簿文件,单击“打开”按钮。如果一切顺利,则合并数据完成,并弹出如下所示的信息。
我们可以查看结果。在“导入工作簿名”工作表中,列出了已经合并数据的工作簿名,如下所示。
在“合并工作表”工作表中,是合并后的数据,如下所示。


猜你喜欢
- 重装系统是一个非常好的解决电脑出现问题的方法,但是有时候重装系统也不是万能的,在重装系统之后也会出现一些新的问题。就比如有人在重装完Win1
- 有时为了强调突出句子中的某个词语,需要改变词语的颜色,那么PPT怎么在单击文字时改变原来颜色?下面小编就为大家详细介绍一下,来看看吧PPT是
- 新冠肺炎的情况一直牵动着许多小伙伴的心,大家在出行前总会担心自己去的地方是否有过疫情发生,自己好尽量避免去到这些地方,高德地图不仅能用来查看
- 现在笔记本系统电脑的使用越来越普遍,它为用户带来了方便,也深受用户喜欢。不过很多用户在使用Win7笔记本系统电脑时,难免会碰到一些系统故障。
- 这篇文章主要介绍了在Docker的容器之间设置网络设置网络通信的方法,Docker是当下最火热的虚拟机类技术,需要的朋友可以参考下你也许已经
- 网易云游戏平台现在非常的火热很多的小伙伴都不知道是不是可以在ios设备上玩安卓游戏,所以下面就给你们带来了网易云游戏ios能否玩安卓的服详情
- 怎么查看Win10网络凭据账户和密码?在使用win10系统的时候经常会需要添加网络凭据,网络凭据就是为了访问网络资源存储在本机的帐户和密码,
- 在wps表格里常常需要用到公式,那么,如何对wps里的公式进行样式的编辑呢?下面就让小编告诉你 wps编辑公式样式的方法。wps编辑公式样式
- 每天在用系统自带屏保是不是很枯燥?今天小编为大家带来不一样的屏保,Fliqlo时钟屏保与传统屏保不同,它没有绚丽的色彩,仅仅用白色的数字显示
- Win11系统是微软全新发布的电脑操作系统,很多用户都安装了,但是很多用户不知道Win11系统是32位还是64位的,那么我们安装的系统如何查
- win10系统有了杜比音效的加持,小伙伴更爱开音箱了。来曲美妙的旋律,在无比优美的音乐海洋了旋转跳舞是再惬意不过。那么win10的杜比音效要
- Directx是一款用来编辑多媒体接口软件,Directx可以加强图片和声音的效果,对游戏玩家来说简直就是一款很好用的软件,那么,Direc
- wps怎么做折线图?折线图是我们经常要用到的一种分析类的图表。比如用X轴坐标来表示一个月的天数,用Y轴坐标表示某一数值,统计数据后描点绘图,
- 让excel面对大量的数据时,全部都需要找出重复次数,这是利用函数是最好的方式,接下来小编以名字作为实例,展示一下,相信很容易就学会。exc
- Win10蓝牙开关不见了怎么办?相信许多小伙伴在遇到这些问题的时候都不知道如何解决,对此今天小编带来了Win10蓝牙的打开方法,感兴趣的小伙
- Excel的自动求和功能非常实用,被广泛应用,那么excel表格中不规范数据怎么求和呢?下面小编就为大家详细介绍一下,一起来学习吧excel
- Win7系统怎么设置IP地址?有时候可能会因为ip地址的原因而导致无法上网,那么这时就需要修改ip地址了,系统之家小编为大家提供IP地址的设
- IE浏览器是微软为Windows系统自带的浏览器,但浏览器安全性不高,有时浏览器主页被病毒或不明文件修改。那么win10系统ie主页修改无效
- 360安全卫士作为一款功能强大的安全杀毒软件,深受许多朋友们的喜欢,它提供优化加速、修复漏洞、木马查杀、垃圾清理等等多种功能,优化电脑上的各
- 黑客攻击可以利用某个特定的漏洞,而且对某些漏洞的利用会同时发生。黑客是一个非常可怕的存在,他们能够通过网络对用户的电脑进行攻击,破解密码后窃