双循环vba excel
我一直在为VBA的Excel编码,但一直没有能够得到它的工作….我想复制从Sheet1的单元格到另一些工作表中的单元格,每个工作表中我需要复制到不同的单元格。
Sub copy() For i=2 To 4 For k=0 To 10 Step 5 Sheets("1").Cells((2+i,1),(6+i;12)).Copy Destination:=Sheets(i).Range("A2:L6") Next k Next i End Sub
而不是复制和粘贴,只需设置一个范围等于另一个,就像这样
Sub copy() For i = 2 To 4 Sheets(i).Range(Sheets(i).Cells(2+i,1), Sheets(i).Cells(6+i,12)) = Worksheets("Sheet1").Range("A2:L6") Next i End Sub
此外,我删除了内部循环,因为k
没有被使用,你有一个分号,我假设你有一个逗号。 而且很难告诉你要完成的任务,因为你将会改变你在循环中将数据放在每张表上的行。 所以也许你不希望i
在你的细胞参考。 在这种情况下,尝试一下
Sub copy() For i = 2 To 4 Sheets(i).Range("A2:L6") = Worksheets("Sheet1").Range("A2:L6") Next i End Sub
假设你想要复制Sheet1上的单元格A2:L6到A2:L6在Sheet2上,A7:L11在Sheet1上到A2:L6在Sheet3上和A12:L16在Sheet1上到A2:L6在Sheet4上,那么应该这样做:
Worksheets("Sheet2").Range("A2:L6").Value = Worksheets("Sheet1").Range("A2:L6").Value Worksheets("Sheet3").Range("A2:L6").Value = Worksheets("Sheet1").Range("A7:L11").Value Worksheets("Sheet4").Range("A2:L6").Value = Worksheets("Sheet1").Range("A12:L16").Value
或者如果您更喜欢使用循环来将其扩展到Sheet5及更高版本:
For i = 2 To 4 Worksheets("Sheet" & i).Range("A2:L6").Value = Worksheets("Sheet1").Range(Cells((i - 2) * 5 + 2, 1), Cells((i - 2) * 5 + 7, 12)).Value Next i
请注意,仍然不需要“k”。