合并指定工作表并横向汇总
时间: 2023-08-12 14:07:55 浏览: 81
以下是一个示例VBA代码,可以合并指定工作表并横向汇总:
```vb
Sub Merge_Sheets_Horizontal()
Dim SourceWorkbook As Workbook, TargetWorkbook As Workbook
Dim SourceWorksheet As Worksheet, TargetWorksheet As Worksheet
Dim TargetLastRow As Long, TargetLastColumn As Long
Dim StartColumn As Long, EndColumn As Long, i As Long
'设置源工作簿和目标工作簿
Set SourceWorkbook = Workbooks("Source Workbook.xlsx")
Set TargetWorkbook = Workbooks("Target Workbook.xlsx")
'设置目标工作表
Set TargetWorksheet = TargetWorkbook.Sheets("Target Sheet")
'循环处理源工作表
For Each SourceWorksheet In SourceWorkbook.Sheets
'检查工作表名称是否包含“Data”
If InStr(SourceWorksheet.Name, "Data") > 0 Then
'获取源工作表的最后一行和最后一列
SourceLastRow = SourceWorksheet.Cells(Rows.Count, 1).End(xlUp).Row
SourceLastColumn = SourceWorksheet.Cells(1, Columns.Count).End(xlToLeft).Column
'获取目标工作表的最后一列
TargetLastColumn = TargetWorksheet.Cells(1, Columns.Count).End(xlToLeft).Column
'确定合并数据的起始列和结束列
StartColumn = TargetLastColumn + 1
EndColumn = StartColumn + SourceLastColumn - 1
'将源数据复制到目标工作表
SourceWorksheet.Range("A1", Cells(SourceLastRow, SourceLastColumn)).Copy _
Destination:=TargetWorksheet.Cells(1, StartColumn)
'将合并后的数据格式化为表格
TargetWorksheet.ListObjects.Add(xlSrcRange, TargetWorksheet.Range(Cells(1, 1), Cells(SourceLastRow, EndColumn)), , xlYes).Name = "MergedData" & i
i = i + 1
End If
Next
'格式化表格样式
TargetWorksheet.ListObjects("MergedData1").TableStyle = "TableStyleMedium9"
'显示消息框
MsgBox "合并完成!"
End Sub
```
上述代码假设源工作簿的文件名为“Source Workbook.xlsx”,目标工作簿的文件名为“Target Workbook.xlsx”,目标工作表的名称为“Target Sheet”,并且要合并的工作表名称都包含“Data”。
代码将循环处理源工作簿中的所有工作表,检查工作表名称是否包含“Data”。如果是,则获取该工作表的最后一行和最后一列,以及目标工作表的最后一列。然后,确定数据的起始列和结束列,将数据复制到目标工作表,并将其格式化为表格。最后,将表格样式设置为“TableStyleMedium9”。
你可以根据需要修改上述代码来满足你的具体需求。
阅读全文