复制范围从多个工作表,而不是一个工作表

背景

我有一个7张工作簿,但只有6个数据。 所有这7张纸都有相同的结构/标题,只是最后一张纸(纸张7)是空白的。

我想写一个代码,将A2:J15范围内的工作表1-6的内容复制到工作表7中。 我目前有一个代码,我一直在testing,看看它是否工作,但我只有一个工作表(见下文)复制和粘贴的代码。 有什么build议么?

在下面,我有两张表,我想要的数据来自目标表,我想要的数据去:

Sub sbCopyRangeToAnotherSheet() Sheets("Source1").Range("A1:B10").Copy Sheets("Source2").Range("A1:B10").Copy Sheets("Destination").Activate Range("A1:B10").Select ActiveSheet.Paste Application.CutCopyMode = False End Sub 

你的问题来自于你试图直接复制两个项目。 第二次复制呼叫将覆盖您在第一次呼叫中复制的数据。

 Sheets("Source1").Range("A1:B10").Copy Sheets("Destination").Activate Range("A1:B10").Select ActiveSheet.Paste Sheets("Source2").Range("<your new range here>").Copy Sheets("Destination").Activate Range("<your new range here>").Select ActiveSheet.Paste Application.CutCopyMode = False 

上面的代码应该解释我的意思,尽pipe不是最有效的方法。 更有效的方法是使用:

 Sheets("Source1").Range("A1:B10").Copy Destination:=Sheets("Destination").Range("A1:B10") Sheets("Source2").Range("A1:B10").Copy Destination:=Sheets("Destination").Range("<range>") 

正如在评论中提出的那样:

 Sub sbCopyRangeToAnotherSheet() Sheets("Source1").Range("A1:B10").Copy Sheets("7").Range("A1") Sheets("Source2").Range("A1:B10").Copy Sheets("7").Range("A1").end(xlDown).offset(1,0) Sheets("Source3").Range("A1:B10").Copy Sheets("7").Range("A1").end(xlDown).offset(1,0) Sheets("Source4").Range("A1:B10").Copy Sheets("7").Range("A1").end(xlDown).offset(1,0) Sheets("Source5").Range("A1:B10").Copy Sheets("7").Range("A1").end(xlDown).offset(1,0) Sheets("Source6").Range("A1:B10").Copy Sheets("7").Range("A1").end(xlDown).offset(1,0) End Sub 

假设你想按行粘贴数据(而不是覆盖它),并且你的工作表被命名为Source1到Source6,那么下面的代码应该可以工作:

 Sub testSO() For i = 1 To 6 Sheets("Source" & i).Range("A1:B10").Copy Sheets("Destination").Range("A" & Rows.Count).End(xlUp).Offset(1) Next i End Sub