具体方法的执行还需要去看教程,这里就不说了。我只是记录一下不同的代码方面我自己查看使用。
=VLOOKUP($B2,Sheet1!$B$2:$H$400,COLUMN(F1),0)&""
1. 合并多个文件到一个 sheet 里
Sub 合并当前目录下所有工作簿的全部工作表到一个新的工作表()
Dim MyPath, MyName, AWbName
Dim Wb As workbook, WbN As String
Dim G As Long
Dim Num As Long
Dim BOX As String
Application.ScreenUpdating = False
MyPath = ActiveWorkbook.Path
MyName = Dir(MyPath & "\" & "*.xlsx")
AWbName = ActiveWorkbook.Name
Num = 0
Do While MyName <> ""
If MyName <> AWbName Then
Set Wb = Workbooks.Open(MyPath & "\" & MyName)
Num = Num + 1
With Workbooks(1).ActiveSheet
.Cells(.Range("B65536").End(xlUp).Row + 2, 1) = Left(MyName, Len(MyName) - 4)
For G = 1 To Sheets.Count
Wb.Sheets(G).UsedRange.Copy .Cells(.Range("B65536").End(xlUp).Row + 1, 1)
Next
WbN = WbN & Chr(13) & Wb.Name
Wb.Close False
End With
End If
MyName = Dir
Loop
Range("B1").Select
Application.ScreenUpdating = True
MsgBox "共合并了" & Num & "个工作薄下的全部工作表。如下:" & Chr(13) & WbN, vbInformation, "提示"
End Sub
2. 合并多个文件到多个 sheets 里
注:此代码的应用条件是所有文件需要在同一个文件夹内。该代码会获取文件的命名,自动填充到对应的sheet里。由于Excel的sheet命名不支持大于31个字符,所以事先需要检查文件名长度是否复合要求。
Sub 合并多个文件到多个工作表()
Dim Wk As Workbook, Sht As Worksheet, n As Integer, MyPath, MyName
Application.ScreenUpdating = False
Application.EnableEvents = False
n = 1
MyPath = ThisWorkbook.Path & "\"
MyName = Dir(MyPath & "\" & "*.xlsx")
Do While MyName <> ""
If MyName <> ThisWorkbook.Name Then
Set Wk = Workbooks.Open(MyPath & "\" & MyName)
Wk.Sheets(1).Copy after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Name = Mid(MyName, 1, Len(MyName) - 4)
'For Each Sht In Wk.Sheets
'Sht.Name = Format(n, "000″)
'n = n + 1
'Next
Wk.Close False
End If
MyName = Dir
Loop
Application.ScreenUpdating = True
Application.EnableEvents = True
MsgBox "合并完毕!", vbInformation, "提示"
End Sub
3. 合并同一个文件里的多个 sheets
Sub UnionSheets()
Application.ScreenUpdating = False
For i = 1 To Sheets.Count
If Sheets(i).Name <> ActiveSheet.Name Then
X = Range("A65536").End(xlUp).Row + 1 '获取当前sheet中已有的行数,从+1行开始
Sheets(i).UsedRange.Copy Cells(X, 1) '往当前sheet中的Cells(X, 1)开始复制数据
End If
Next
Range("A1").Select
Application.ScreenUpdating = True
MsgBox "合并完毕!", vbInformation, "报告"
End Sub
原教程在 这里 。