循环粘贴公式直到范围中的下一个单元格为空

时间:2012-02-11 05:39:41

标签: excel vba excel-vba

我正在尝试将一个公式粘贴到单元格范围旁边,但只有一个包含值的一个,脚本必须循环,直到该范围中的下一个单元格为空。例如,工作表1列A包含第12行的日期,然后我想在列D2:D12中粘贴公式问候

5 个答案:

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

答案 1 :(得分:2)

当您向下看第一个空白单元格时,您可以避免循环并使用

该代码包括一项测试,以确保如果所有A列都为空,则代码不会继续 - 即,如果A1向下的范围延伸到工作表的底部且A1为空白

此代码添加了一个示例公式,将D列中的每个单元格链接到B列中的相应行

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

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

答案 3 :(得分:1)

试试这个:

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

答案 4 :(得分:1)

这是一个内置于Excel中的简单解决方案,只要您不想复制到第一个空白处,跳过空白,然后继续复制:

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