2012-02-11 89 views

回答

3

像這樣?

Option Explicit 

Sub Sample() 
    Dim lastRow As Long, i As Long 
    Dim ws As Worksheet 

    Set ws = Sheets("Sheet1") 

    lastRow = ws.Range("A" & Rows.Count).End(xlUp).Row 

    With ws 
     For i = 1 To lastRow 
      If Len(Trim(.Range("A" & i).Value)) <> 0 Then _ 
      .Range("D" & i).Formula = "YOUR FORMULA" 
     Next i 
    End With 
End Sub 
+0

Sid,投了1票,雖然我認爲這是一個「向下看」,而不是「仰望」的興趣範圍。 – brettdj 2012-02-11 08:34:23

+0

即使我想到了這一點,但當我重新讀到這個問題「例如表1列A包含日期,直到第12行」我決定,否則:) – 2012-02-11 08:37:15

2

當你正在觀察到的第一個空白單元格,然後你就可以避免一個循環,並使用

代碼中包含一個測試,以確保如果所有A列的是代碼不進行空白 - 即,如果從A1向下的範圍延伸至片的底部,並且A1是空白

此代碼添加一個示例公式中B列在列d每個單元鏈接到相應的行

Sub FillData() 
    Dim rng1 As Range 
    Set rng1 = Range([a1], [a1].End(xlDown)) 
    If Not (rng1.Rows.Count = Rows.Count And Len([a1].Value) = 0) Then rng1.Offset(0, 3).FormulaR1C1 = "=RC2" 
End Sub 
+0

我對晚會有點遲,但這是一個很好的選擇,避免循環。 – Reafidy 2012-02-13 00:12:06

1

我喜歡Sid的開始,但一旦你有行的範圍內,可以一次全部插入公式插入列d,無循環,多種方式,這裏有一個:

Option Explicit 

Sub AddFormula() 
    Dim LR As Long 
    LR = Range("A" & Row.Count).End(xlUp).Row 
    Range("D2:D12").Formula = "=A2 + 7" 'just an example of a formula 
End Sub 
+0

謝謝傑裏:)。但是,如果沒有空白單元格,這可能不會有幫助:)如果沒有空白單元格,那麼你的方法是最快的方法:) +1 – 2012-02-11 18:11:25

+0

好點,我這麼長時間的習慣一直在構造公式,這樣做爲我測試,所以VBA不必。我插入的公式將如下所示:** = IF(A1 <>「」,MyFormula,「」)**。 – 2012-02-14 00:56:37

1

試試這個:

Range("A:A").SpecialCells(2).Areas(1).Offset(, 3).Formula = "MyFormula" 
0

這是內置到Excel中一個簡單的解決方案,只要你不想複製到第一個空白,跳過空白,然後繼續複製:

在第一個單元格中輸入公式你的範圍,並且只要它直接在列中在填充單元格範圍的左側或右側,只需雙擊單元格右下角的黑盒子處理程序即可。這會自動將公式複製到範圍的最後一個非空單元格。

相關問題