复制多张纸而不是一张纸

时间:2017-07-12 15:09:28

标签: excel vba excel-vba

背景

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

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

在下面,我有两张表,我希望数据来自哪里,以及我想要数据的目标表:

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

3 个答案:

答案 0 :(得分:1)

如评论中所述:

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

答案 1 :(得分:1)

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

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

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

Sheets("Source1").Range("A1:B10").Copy Destination:=Sheets("Destination").Range("A1:B10")

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

答案 2 :(得分:0)

假设您要按行粘贴数据(而不是覆盖它),并且您的工作表名为Source1 to 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