首页 > 解决方案 > Excel 宏 FOR EACH 循环复制粘贴到不同工作表中的相同范围并粘贴到下一列

问题描述

我在工作簿中有几个工作表(工作表 A、工作表 B、工作表 C)。我想从这些工作表中的每一个复制相同的范围并将它们粘贴到另一个工作簿的工作表中,每个都在下一列中。我知道如何编写要复制的代码,但更难的部分是粘贴。这就是我的想法:

sub copypaste ()

dim wb as workbook 'this workbook
dim destination as workbook 'destination workbook
dim ws as worksheet
dim ws1 as worksheet '(in this workbook)
dim ws2 as worksheet '(in this workbook)
dim ws3 as worksheet '(in this workbook)
dim DestWorksheet as worksheet 

For Each ws in wb.worksheets  (referring to ws1, ws2, and ws3)
Range.("D1:D231").Copy

DestWorksheet.(I WANT TO PASTE DATA FROM WS1 in Column A in the destination worksheet, Ws2 in Column B, Ws3 in Column3) etc.

标签: excelvba

解决方案


试试下面的。此代码同时使用工作表和列的索引,因此在第 n 个工作表迭代值也将粘贴到第 n 列。

请记住,我已经放弃了.Copy如果您只是复制值并且为此使用我的代码更快,则不需要此功能。如果您确实需要复制的不仅仅是值,请将.Range(.Cells(1, i), .Cells(231, ...行替换为复制粘贴行。

Sub copypasta()

Dim i As Integer
Dim wb As Workbook
Set wb = ThisWorkbook
Dim ws As Worksheet

For i = 1 To wb.Sheets.Count
    With Workbooks(DESTINATION).Sheets(DESTINATION)
        .Range(.Cells(1, i), .Cells(231, i)).Value = wb.Sheets(i).Range("D1:D231").Value
    End With
Next i
End Sub

推荐阅读