我正在尝试将一个公式粘贴到单元格范围旁边,但只有一个包含值的一个,脚本必须循环,直到该范围中的下一个单元格为空。例如,工作表1列A
包含第12行的日期,然后我想在列D2:D12
中粘贴公式问候
答案 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中的简单解决方案,只要您不想复制到第一个空白处,跳过空白,然后继续复制:
在您的范围的第一个单元格中输入公式,只要它在您的填充单元格范围的右侧或左侧的列中,只需双击右下角的黑盒子处理程序即可细胞的一角。这将自动将您的公式复制到该范围的最后一个非空单元格。