excel中如何批量合并 D孙能录取名册2023年名册名册数据汇总 文件夹中表头不一致的工作表格以表头最长的为基础如果有的表没有此列则新增此列
您可以按照以下步骤批量合并表头不一致的工作表格,并以表头最长的为基础,新增缺失的列:
- 打开一个新的Excel文件。
- 在新文件的第一个工作表中,将表头最长的工作表格复制粘贴过来。这将作为合并后的基础表格。
- 在Excel中按下Alt + F11,打开Visual Basic for Applications(VBA)编辑器。
- 在VBA编辑器中,插入一个新的模块。您可以在菜单栏中选择"插入" -> "模块"。
- 在新的模块中,粘贴以下VBA代码:
Sub MergeSheets()
Dim FolderPath As String
Dim FileName As String
Dim wb As Workbook
Dim wsBase As Worksheet
Dim ws As Worksheet
Dim LastColumn As Long
Dim i As Integer
'设置文件夹路径
FolderPath = "D:\孙能\录取名册\2023年名册\名册数据\汇总"
'打开基础表格
Set wb = ThisWorkbook
Set wsBase = wb.Sheets(1)
'循环处理文件夹中的所有Excel文件
FileName = Dir(FolderPath & "\*.xlsx")
Do While FileName <> ""
'打开每个文件
Set wb = Workbooks.Open(FolderPath & "\" & FileName)
'循环处理每个工作表
For Each ws In wb.Sheets
'检查表格是否有表头
If ws.Range("A1").Value <> "" Then
'找到基础表格的最后一列
LastColumn = wsBase.Cells(1, Columns.Count).End(xlToLeft).Column
'循环处理基础表格的每一列
For i = 1 To LastColumn
'检查基础表格的列是否存在于当前工作表
If Application.WorksheetFunction.CountIf(ws.Rows(1), wsBase.Cells(1, i).Value) = 0 Then
'如果不存在,则在当前工作表的最后一列添加此列
ws.Cells(1, Columns.Count).End(xlToLeft).Offset(0, 1).Value = wsBase.Cells(1, i).Value
End If
Next i
End If
Next ws
'关闭并保存更改后的工作簿
wb.Close SaveChanges:=True
'继续处理下一个文件
FileName = Dir
Loop
End Sub
- 修改代码中的文件夹路径为您的实际路径:"D:\孙能\录取名册\2023年名册\名册数据\汇总"。
- 在VBA编辑器中按下F5,运行代码。代码将会自动批量合并工作表格,并根据基础表格的表头新增缺失的列。
请注意,此代码仅适用于合并同一个文件夹中的所有Excel文件,且要求所有工作表都以表头为第一行。如果有其他特殊情况,请告诉我,我会尽力提供更准确的解决方案
原文地址: https://www.cveoy.top/t/topic/iIav 著作权归作者所有。请勿转载和采集!