2012-02-11 87 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中一个简单的解决方案,只要你不想复制到第一个空白,跳过空白,然后继续复制:

在第一个单元格中输入公式你的范围,并且只要它直接在列中在填充单元格范围的左侧或右侧,只需双击单元格右下角的黑盒子处理程序即可。这会自动将公式复制到范围的最后一个非空单元格。

相关问题