【问题标题】:Excel macro FOR EACH loop to copy paste same range in different worksheets and paste to next columnExcel 宏 FOR EACH 循环复制粘贴不同工作表中的相同范围并粘贴到下一列
【发布时间】:2019-04-30 13:53:59
【问题描述】:

我在工作簿中有多个工作表(工作表 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.

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    试试下面的。此代码同时使用工作表和列的索引,因此在第 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
    

    【讨论】:

    • @brigfalk 你找到答案了吗?
    【解决方案2】:

    不要使用复制粘贴,效率低下

    只需将一个范围的值放在另一个,在你想要的位置

    DestWorksheet.Range("A1:A231").Value2 = Range("D1:D231").Value2
    ws2.Range("B1:B231").Value2 = Range("D1:D231").Value2
    ws3.Range("C1:C231").value2 = Range("D1:D231").Value2
    

    【讨论】:

    • OP 可能仍希望保留原始范围的公式和格式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-21
    • 1970-01-01
    • 2013-06-08
    相关资源
    最近更新 更多