在 for 循环中复制列范围
Copying Column Ranges within a for loop
我 运行 以下代码工作正常,但我找不到任何解决方案来简化它。已尝试以多种不同方式重新排列语法以将代码缩短为两行,但它们似乎不起作用,任何人都可以建议如何简化此代码:
'export results to columns
Worksheets(analysis_sheet & " Analysis").Columns(9).Copy Columns(9 + (5 * (i - 6)))
Worksheets(analysis_sheet & " Analysis").Columns(10).Copy Columns(10 + (5 * (i - 6)))
Worksheets(analysis_sheet & " Analysis").Columns(11).Copy Columns(11 + (5 * (i - 6)))
Worksheets(analysis_sheet & " Analysis").Columns(12).Copy Columns(12 + (5 * (i - 6)))
谢谢!
...different ways to shorten the code to two lines...
这是一个 1 行,将从 Worksheets(analysis_sheet & " Analysis")
复制到 ActiveSheet
Worksheets(analysis_sheet & " Analysis").Columns("I:L").Copy Columns(9 + (5 * (i - 6)))
如果是复制到同一个sheet那么把上面的代码改成
Worksheets(analysis_sheet & " Analysis").Columns("I:L").Copy _
Worksheets(analysis_sheet & " Analysis").Columns(9 + (5 * (i - 6)))
编辑
That won't work because the OP is copying from columns 9 to 12 – freeflow 16 mins ago
No. In the term Columns(9/10/11/12 +(5*(i-6))) how does excel know how to update the 9 to 10,11,12 – freeflow 11 mins ago
假设 i
的值为 10
,所以 9 + (5 * (i - 6)) = 29
。同意吗?所以 Col I (9)
将被粘贴到 Col AC (29)
中。同样,Col J (10)
将作为 10 + (5 * (10 - 6)) = 30
发布在 Col AD (30)
中,依此类推...
这两段代码是一样的
Sub SampleA()
Dim i As Long
i = 10
Sheet1.Columns(9).Copy Columns(9 + (5 * (i - 6)))
Sheet1.Columns(10).Copy Columns(10 + (5 * (i - 6)))
Sheet1.Columns(11).Copy Columns(11 + (5 * (i - 6)))
Sheet1.Columns(12).Copy Columns(12 + (5 * (i - 6)))
End Sub
Sub SampleB()
Dim i As Long
i = 10
Sheet1.Columns("I:L").Copy Sheet1.Columns(9 + (5 * (i - 6)))
End Sub
我 运行 以下代码工作正常,但我找不到任何解决方案来简化它。已尝试以多种不同方式重新排列语法以将代码缩短为两行,但它们似乎不起作用,任何人都可以建议如何简化此代码:
'export results to columns
Worksheets(analysis_sheet & " Analysis").Columns(9).Copy Columns(9 + (5 * (i - 6)))
Worksheets(analysis_sheet & " Analysis").Columns(10).Copy Columns(10 + (5 * (i - 6)))
Worksheets(analysis_sheet & " Analysis").Columns(11).Copy Columns(11 + (5 * (i - 6)))
Worksheets(analysis_sheet & " Analysis").Columns(12).Copy Columns(12 + (5 * (i - 6)))
谢谢!
...different ways to shorten the code to two lines...
这是一个 1 行,将从 Worksheets(analysis_sheet & " Analysis")
复制到 ActiveSheet
Worksheets(analysis_sheet & " Analysis").Columns("I:L").Copy Columns(9 + (5 * (i - 6)))
如果是复制到同一个sheet那么把上面的代码改成
Worksheets(analysis_sheet & " Analysis").Columns("I:L").Copy _
Worksheets(analysis_sheet & " Analysis").Columns(9 + (5 * (i - 6)))
编辑
That won't work because the OP is copying from columns 9 to 12 – freeflow 16 mins ago
No. In the term Columns(9/10/11/12 +(5*(i-6))) how does excel know how to update the 9 to 10,11,12 – freeflow 11 mins ago
假设 i
的值为 10
,所以 9 + (5 * (i - 6)) = 29
。同意吗?所以 Col I (9)
将被粘贴到 Col AC (29)
中。同样,Col J (10)
将作为 10 + (5 * (10 - 6)) = 30
发布在 Col AD (30)
中,依此类推...
这两段代码是一样的
Sub SampleA()
Dim i As Long
i = 10
Sheet1.Columns(9).Copy Columns(9 + (5 * (i - 6)))
Sheet1.Columns(10).Copy Columns(10 + (5 * (i - 6)))
Sheet1.Columns(11).Copy Columns(11 + (5 * (i - 6)))
Sheet1.Columns(12).Copy Columns(12 + (5 * (i - 6)))
End Sub
Sub SampleB()
Dim i As Long
i = 10
Sheet1.Columns("I:L").Copy Sheet1.Columns(9 + (5 * (i - 6)))
End Sub