通过添加工作表名称作为第一列合并特定工作表

我有相当数量的名字以_A_B结尾的表。 在这里输入图像说明在这里输入图像说明在这里输入图像说明

我想合并所有以_A_B结尾的工作表。 他们有相同的列数,但行数不同。 但是,在合并时,我希望工作表名称在合并工作表中的最后一行中重复。 结果: 在这里输入图像说明

我希望将结果保存在同一个工作簿中,但保存在名为“合并”的工作表中。
这里是示例表,如果你想工作 。

我曾试过:

Sub Merge_into_One() Dim ws As Worksheet Dim TargetRow As Long Application.Calculation = xlCalculationManual Application.ScreenUpdating = False TargetRow = 1 For Each ws In ActiveWorkbook.Sheets With ws If .Name Like "*" & strSearch & "_A" Or _ .Name Like "*" & strSearch & "_B" Then .Range("A1:C99").Copy With Worksheets("Merged").Cells(TargetRow, 1) .PasteSpecial Paste:=xlPasteValuesAndNumberFormats End With TargetRow = TargetRow + 99 End If End With Next ws Application.CutCopyMode = False Application.ScreenUpdating = True End Sub 

但是,在这里,我取99行,假设我的行不会超过这个数字。 但是,我想要采取完全相同的行数出现在每张表中,而不是更less。 在这里,我不能把表格名称放在第一列,并重复,直到同一张表的最后一击。

没有testing。 编辑:哎呀,我似乎忘了一些东西。

 dim RowsToMerge as integer dim RowsPresent dim RangeToMerge as range For i = 1 To ActiveWorkbook.Worksheets.Count If Instr(Worksheets(i).Name, "ABC") <> 0 Then Set ws = Worksheets(i) RowsToMerge = ws.Cells(Rows.Count, "A").End(xlUp).Row RowsPresent = Sheets("Merged").Cells(Rows.Count, "A").End(xlUp).Row Set RangeToMerge = ws.Range("A1:C" & RowsToMerge) ws.RangeToMerge.Copy destination:=Worksheets("Merged").Range("B" & RowsPresent + 1) Worksheets("Merged").Range("A" & RowsPresent + 1) = ws.Name End If Next