Vba 通过将图纸名称添加为第一列来合并特定图纸
我有相当多的工作表,其名称以\u a或\u B结尾。 我想将以\u A或\u B结尾的所有工作表合并在一起。它们的列数相同,但行数不同。但是,在合并时,我希望sheetname在合并的工作表中一直重复到该工作表的最后一行。结果: 我希望结果保存在同一工作簿中,但保存在名为“合并”的工作表中。Vba 通过将图纸名称添加为第一列来合并特定图纸,vba,excel,Vba,Excel,我有相当多的工作表,其名称以\u a或\u B结尾。 我想将以\u A或\u B结尾的所有工作表合并在一起。它们的列数相同,但行数不同。但是,在合并时,我希望sheetname在合并的工作表中一直重复到该工作表的最后一行。结果: 我希望结果保存在同一工作簿中,但保存在名为“合并”的工作表中。 我尝试过的: 但是在这里,假设我的行数不会超过这个数字,那么我将选择99行。但是,我希望每个工作表中显示的行数完全相同,而不是更多或更少。在这里,我不能将工作表的名称放在第一列,并重复它,直到最后
我尝试过的:
但是在这里,假设我的行数不会超过这个数字,那么我将选择99行。但是,我希望每个工作表中显示的行数完全相同,而不是更多或更少。在这里,我不能将工作表的名称放在第一列,并重复它,直到最后一次点击同一工作表。未测试。编辑:哎呀,我好像忘记了一些事情
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
dim行合并为整数
暗行出现
变暗范围变大为范围
对于i=1到ActiveWorkbook.Worksheets.Count
如果Instr(工作表(i).名称,“ABC”)为0,则
设置ws=工作表(i)
RowsToMerge=ws.Cells(Rows.Count,“A”).End(xlUp).Row
RowsPresent=工作表(“合并”)。单元格(Rows.Count,“A”)。结束(xlUp)。行
设置RangeToMerge=ws.Range(“A1:C”和RowsToMerge)
ws.RangeToMerge.Copy目标:=工作表(“合并”)。范围(“B”和行呈现+1)
工作表(“合并”).Range(“A”&RowsPresent+1)=ws.Name
如果结束
下一个
未测试。编辑:哎呀,我好像忘记了一些事情
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
dim行合并为整数
暗行出现
变暗范围变大为范围
对于i=1到ActiveWorkbook.Worksheets.Count
如果Instr(工作表(i).名称,“ABC”)为0,则
设置ws=工作表(i)
RowsToMerge=ws.Cells(Rows.Count,“A”).End(xlUp).Row
RowsPresent=工作表(“合并”)。单元格(Rows.Count,“A”)。结束(xlUp)。行
设置RangeToMerge=ws.Range(“A1:C”和RowsToMerge)
ws.RangeToMerge.Copy目标:=工作表(“合并”)。范围(“B”和行呈现+1)
工作表(“合并”).Range(“A”&RowsPresent+1)=ws.Name
如果结束
下一个
你尝试过什么吗?@DavidGM我更新了我的答案和我尝试过的内容。你尝试过什么吗?@DavidGM我更新了我的答案和我尝试过的内容。实际上,SheetName只有_A或_B的共同点,没有ABC。有些图纸名称是CGT、RTR、ERF或任何名称。但它们都以A或B结尾。现在,它只会复制工作表第一个条目处的工作表名称,并插入到每一行的开头,就像您希望的那样。我得走了,没有时间完成,但我想你应该有一个好的开始!然后把“ABC”改为“u”。实际上我试着测试你的答案,但有一个错误。你能测试一下并告诉我正确的版本吗?你能试着调试一下并告诉我错误在哪里吗?我无法测试它,我现在正在工作。实际上,这些表名只有A或B的共同点,而没有ABC。有些图纸名称是CGT、RTR、ERF或任何名称。但它们都以A或B结尾。现在,它只会复制工作表第一个条目处的工作表名称,并插入到每一行的开头,就像您希望的那样。我得走了,没有时间完成,但我想你应该有一个好的开始!然后把“ABC”改为“u”。实际上我试着测试你的答案,但有一个错误。你能测试一下并告诉我正确的版本吗?你能试着调试一下并告诉我错误在哪里吗?我不能测试它,我现在正在工作。