对于 Excel 中的模型,我想将数据从工作簿中的一张工作表复制并粘贴到工作簿中的另一张工作表,并使用 for next 循环转置此数据。来自工作文件 CME 的数据应粘贴到 RME 工作文件中。数据总行数为2420。但是,由于复制和粘贴不同工作簿中的范围不同且步长不同,因此我假设我应该使用两个不同的变量i和j。前两行代码是手动方式,无需循环
当我尝试运行这段代码时,它会给我一个错误。第一个代码是如何在没有循环的情况下手动完成的示例。此后循环开始。非常感谢能够帮助我解决这个问题的人。
文件中的示例:在 Excel 工作表 CME 中:复制范围 J2:J10 将其传输到工作表 RME 并粘贴到 B2:J2 上,因此其中具有转置函数非常重要。对于下一个范围,我需要复制范围 J12:J20 以将其传输到工作表 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
Note:在较大的数据库上执行复制/粘贴和转置需要更长的时间。比较上面的两个代码示例:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)