Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 通过将图纸名称添加为第一列来合并特定图纸_Vba_Excel - Fatal编程技术网

Vba 通过将图纸名称添加为第一列来合并特定图纸

Vba 通过将图纸名称添加为第一列来合并特定图纸,vba,excel,Vba,Excel,我有相当多的工作表,其名称以\u a或\u B结尾。 我想将以\u A或\u B结尾的所有工作表合并在一起。它们的列数相同,但行数不同。但是,在合并时,我希望sheetname在合并的工作表中一直重复到该工作表的最后一行。结果: 我希望结果保存在同一工作簿中,但保存在名为“合并”的工作表中。 我尝试过的: 但是在这里,假设我的行数不会超过这个数字,那么我将选择99行。但是,我希望每个工作表中显示的行数完全相同,而不是更多或更少。在这里,我不能将工作表的名称放在第一列,并重复它,直到最后

我有相当多的工作表,其名称以\u a\u B结尾。

我想将以\u A\u B结尾的所有工作表合并在一起。它们的列数相同,但行数不同。但是,在合并时,我希望sheetname在合并的工作表中一直重复到该工作表的最后一行。结果:

我希望结果保存在同一工作簿中,但保存在名为“合并”的工作表中。

我尝试过的:



但是在这里,假设我的行数不会超过这个数字,那么我将选择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”。实际上我试着测试你的答案,但有一个错误。你能测试一下并告诉我正确的版本吗?你能试着调试一下并告诉我错误在哪里吗?我不能测试它,我现在正在工作。