批量合并Excel文件(批量合并sheet)
批量合并Excel文件
1、VBA
快捷键Alt+F11,需要保证需要合并的文件在同一个文件夹下,美中不足的地方是每个文件的表头都有保留,合并后需要进行删除。
Sub 合并当前目录下所有工作簿()
Dim Wb As Workbook
Application.ScreenUpdating = False
MyPath = ActiveWorkbook.Path
MyName = Dir(MyPath & "\" & "*.xlsx")
AWbName = ActiveWorkbook.Name
Do While MyName <> ""
If MyName <> AWbName Then
Set Wb = Workbooks.Open(MyPath & "\" & MyName)
c = ThisWorkbook.Sheets("sheet1").UsedRange.SpecialCells(xlCellTypeLastCell).Row
If c = 1 Then '防止合并的工作簿第一行空着
c = 0
End If
ActiveSheet.UsedRange.Copy ThisWorkbook.Sheets("sheet1").Cells(c + 1, 1) '合并工作簿
的第一个sheet名字为:sheet1
Wb.Close False
End If
MyName = Dir
Loop
Application.ScreenUpdating = True
MsgBox "已完成"
End Sub
2、使用PowerQuery
2016版本以上可以使用,需要注意在合并文件夹外部新建的Excel文件。
点击数据--新建查询--从文件--从文件夹
将选中content字段使用删除列--删除其他列
添加列--添加自定义列,公式中填写= Excel.Workbook([Content],true)
content是插入的,true是绕开第一行的意思
点击确定
点击自定义字段右侧按钮,只勾选Data
继续点击右侧按钮点击确定
选中content列,删除列--删除列,下面截图圈错地方了,尴尬
看到中间有很多行是null,需要删除空行,点击删除行--删除空行
点击关闭并上载
可以选择保存数据的位置
最终呈现效果如下图
批量合并Excel中sheet文件
1、VBA
批量合并Excel中sheet文件,美中不足的地方是每个文件的表头都有保留,合并后需要进行删除。
Sub 合并当前工作簿下的所有工作表()
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set st = Worksheets.Add(before:=Sheets(1))
st.Name = "合并"
For Each shet In Sheets:
If shet.Name <> "合并" Then
i = st.Range("A" & Rows.Count).End(xlUp).Row + 1
shet.UsedRange.Copy
st.Cells(i, 1).PasteSpecial Paste:=xlPasteAll
End If
Next
Application.DisplayAlerts = True
Application.ScreenUpdating = True
MsgBox "已完成"
End Sub
参考:如何快速将多个Excel表合并成一个?
https://zhuanlan.zhihu.com/p/378353419
史上最全!Excel 如何合并多个工作表或多个工作簿?
https://zixue.3d66.com/article/details_84761.html