如何在多列的列中应用公式

时间:2013-07-18 17:22:16

标签: vba loops excel-vba excel

我想使用公式自动填充多个列。由于列均匀分布,我想使用循环来完成此任务。如何更改以下代码以循环填充显示公式的四列:

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更改为C2,E2,G2和I2对应于前面提到的D,F,H和J.重点是使用上面包含的循环结构,除非这是不必要的。

2 个答案:

答案 0 :(得分:0)

无需循环。请尝试以下代码
同样,您可以应用于其他列。

Sub test()
    ThisWorkbook.Sheets("Sheet1").Range("D2:D14").Formula = "=IF(RC[-2]="""","""",(RC[-1]/RC[-2])*60)"
End Sub

答案 1 :(得分: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