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

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

喜欢这个?

 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 

当你正在向下看第一个空白单元格,那么你可以避免循环和使用

该代码包括一个testing,以确保代码不会继续,如果所有列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 

我喜欢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 

尝试这个:

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

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

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