在 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