合并工作簿与合并工作表,是Excel数据处理永恒的话题。原来韩老师讲过用SQL语句,还讲过Excel|零基础也会合并多工作表,只需鼠标按序点下去,今天给大家两组代码,每次需要合并工作簿与或是工作表时,复制过来使用就好了。

合并工作簿

代码如下(代码横屏观看效果更好):

Sub 合并工作薄() Dim FileOpen '定义打开文件变量 Dim i As Integer '定义打开文件个数变量 Application.ScreenUpdating = False '关闭屏幕更新,避免合并时屏幕闪烁 FileOpen = Application.GetOpenFilename(FileFilter:="Microsoft Excel文件(.xlsx),.xlsx", MultiSelect:=True)'打开文件类型为.xlsx,并可以打开多个 i = 1 Do While i <= UBound(FileOpen) Workbooks.Open Filename:=FileOpen(i) Sheets().Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) '将需要合并的工作薄中工作表合并到最后一个工作表 i = i 1 Loop Application.ScreenUpdating = True '打开屏幕更新 MsgBox "已完成合并" '合并完成并提示 End Sub

代码窗口如下:

vba多个excel文件合并为一个表格(ExcelVBA)(1)

效果如下:

vba多个excel文件合并为一个表格(ExcelVBA)(2)

合并工作表

在VBA窗口中输入以下代码(代码横屏观看效果更好):

Sub 合并工作表() Application.ScreenUpdating = False '关闭屏幕更新,避免合并时屏幕闪烁 Dim sht As Worksheet '定义工作表变量 Dim irow%, icol% '定义行列变量 Sheet1.UsedRange.ClearContents '清除sheet1现有数据 For Each sht In Worksheets If sht.Name <> Sheet1.Name Then With sht irow = .Cells(.Rows.Count, 1).End(xlUp).Row '当前工作表数据行数 icol = .Cells(1, .Columns.Count).End(xlToLeft).Column '当前工作表数据列数 If Sheet1.Range("a1") = "" Then .Range("a1").Resize(irow, icol).Copy Sheet1.Range("a1")'当前工作表第一行复制到汇总工作表 Else .Range("a2").Resize(irow - 1, icol).Copy Sheet1.Range("a" & Sheet1.Cells(Sheet1.Rows.Count, 1).End(xlUp).Row 1)'当前工作表除第一行以外的数据复制到汇总工作表 End If End With End If Next Application.ScreenUpdating = True'打开屏幕更新 End Sub

如下图:

vba多个excel文件合并为一个表格(ExcelVBA)(3)

效果如下:

vba多个excel文件合并为一个表格(ExcelVBA)(4)

不要怕VBA,你可以从模仿开始写起的,写多了,见识多了,你也会了。当然,如果有编辑的基础的,学的快一些,如果没有编辑基础的朋友,那要先去了解变量、语句、算法、对象的概念了。

------------------------------------------

--------------------------------------------

,