2013-07-18 14 views
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變成C2,E2,G2和I2,對應於前面提到的D,F,H和J.關鍵是要使用上面包含的循環結構,除非沒有必要。

回答

0

無需循環。請嘗試以下代碼
同樣,您可以將其應用於其他列。

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

爲了澄清,所述柱的長度將在程序的每一次執行而變化,並且通過循環j意味着從一列跳到另一列。此外,公式中的B2將始終爲列B.基本上,公式用作單位換算,所以我需要在每次轉換中包含B,但它們是需要轉換的四列數據。 不幸的是,這並不適合我。我實際上已經將它與Select Case一起使用,但我寧願使用更緊湊的東西。 –

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