复制粘贴 VBA 从一个工作表到另一个工作表的范围循环并转置数据

Copy Paste VBA Range from one to another worksheet Loop and transpose the data

对于 Excel 中的模型,我想将工作簿中一个 sheet 中的数据复制并粘贴到工作簿中的另一个 sheet 中,并使用以下方法转置该数据的下一个循环。工作文件 CME 中的数据应粘贴到 RME 的工作文件中。数据的总行数是 2420。但是,由于复制和粘贴不同工作簿中的范围不同,步长也不同,我假设我应该使用两个不同的变量 i 和 j。前两行代码是没有循环的手动方式

当我尝试 运行 这段代码时,它会给我一个错误。第一个代码是一个例子,它应该如何在没有循环的情况下手动完成。此后循环开始。已经非常感谢可以帮助我解决这个问题的人。

文件示例:在Excel工作sheet CME:复制范围J2:J10以将其转移到工作sheet RME粘贴到B2:J2 所以里面有个转置函数很重要。对于下一个范围,我需要复制范围 J12:J20 以将其传输到 worksheet RME 以粘贴到 B3:J3 等等,因此我需要创建一个循环,对吗?复制和粘贴范围有两种不同的步长。已经非常感谢了!

我想出了以下公式:

Dim i As Long
Dim j As Long

Worksheets("CME").Range("J2:J10").Copy
Worksheets("RME").Range("B2").PasteSpecial Transpose:=True

Worksheets("CME").Range("J12:J20").Copy
Worksheets("RME").Range("B3").PasteSpecial Transpose:=True

For i = 11 To 2420 Step 10
    Worksheets("CME").Range (Cells(i + 11, 10)), Cells(i + 19, 10).Copy

    For j = 3 To 2420 Step 1
    Worksheets("RME").Range(Cells(j + 1, 2)).PasteSpecial Transpose:=True
    Next j

Next i

End Sub   

我对你到底想做什么有点困惑,但这样做可以吗?:

第一个代码:不使用转置

Sub Test()

Dim X As Long, Y As Long, Z As Long

Z = 2
For X = 2 To 2420 Step 10
    For Y = 2 To 10
        Sheets("RME").Cells(Z, Y).Value = Sheets("CME").Cells(X + (Y - 1), 10).Value
    Next Y
    Z = Z + 1
Next X

End Sub

第二个代码:使用转置

Sub Test()

Dim X As Long, Z As Long
Dim RNG1 As Range, RNG2 As Range

Sheets("CME").Activate
Z = 2
For X = 2 To 2420 Step 10
    Set RNG1 = Sheets("CME").Range(Cells(X, 10), Cells(X + 9, 10))
    Set RNG2 = Sheets("RME").Cells(Z, 2)
    RNG1.Copy
    RNG2.PasteSpecial Transpose:=True
    Z = Z + 1
Next X
Sheets("RME").Activate

End Sub

注意: Copy/Pasting 和转置在更大的数据库上执行需要更长的时间。比较上面的两个代码示例:

  • 首码:0,13秒
  • 第二个代码:5,5秒