0

我想用公式自动填充几列。由于列是均匀分布的,我想使用循环来完成此操作。如何更改以下代码以循环使用所示公式填充四列:

j = 4
Do Until j = 14
    Cells(2, j).Select
    With Sheets("Sheet1")
        Intersect(.Range("D2").CurrentRegion, .Range("D:D")).Formula = "=(C2/B2)*60"
    End With
j = j + 2
Loop

上面的代码适用于 D 列,但我需要将其应用于 D、F、H 和 J 列。我还需要公式中的 C2 更改为与上述 D 对应的 C2、E2、G2 和 I2, F、H 和 J。重点是使用上面包含的循环结构,除非这是不必要的。

4

2 回答 2

0

无需循环。试试下面的代码
同样你可以应用到其他列。

Sub test()
    ThisWorkbook.Sheets("Sheet1").Range("D2:D14").Formula = "=IF(RC[-2]="""","""",(RC[-1]/RC[-2])*60)"
End Sub
于 2013-07-18T18:01:41.023 回答
0

使用 Select Case 是一种选择,尽管它确实占用了一些空间:

j = 4
Do Until j = 12
    Cells(2, j).Select
    Select Case j
        Case 4
            With Sheets("Sheet1")
            Intersect(.Range("D2").CurrentRegion, .Range("D2:D" & DataPointCount)).Formula = "=(C2/B2)*60"
            End With
        Case 6
            With Sheets("Sheet1")
            Intersect(.Range("F2").CurrentRegion, .Range("F2:F" & DataPointCount)).Formula = "=(E2/B2)*60"
            End With
        Case 8
            With Sheets("Sheet1")
            Intersect(.Range("H2").CurrentRegion, .Range("H2:H" & DataPointCount)).Formula = "=(G2/B2)*60"
            End With
        Case 10
            With Sheets("Sheet1")
            Intersect(.Range("J2").CurrentRegion, .Range("J2:J" & DataPointCount)).Formula = "=(I2/B2)*60"
            End With
    End Select
j = j + 2
Loop
于 2013-07-19T12:51:04.110 回答