find所有的公式,并将它们向下拖动(FillDown)到一个特定的行号跳过其中有值的单元格?

我试图使用FillDown使所有的公式被拉下来的某一行跳过单元格中有一个值…

如果我们看一下这个例子:

例

在列C和列E中都有公式,而在C6中,我们用15的值覆盖了这个单元格。

如果我们在第5行,我想要代码拖动公式5行,它需要在C5中的公式,因为C6有一个值,它会跳过这一个,而是把它放到C7,并将其拖下来。

有谁知道如何做到这一点?

通过列循环,如果单元格是空的,然后从第一个单元格复制公式?

喜欢这个?

Sub Sample() Dim rng As Range Dim lRow As Long, i As Long '~~> Change this to the relevant sheet name With ThisWorkbook.Sheets("Sheet1") lRow = .Range("A" & .Rows.Count).End(xlUp).Row '~~> C2 Which I am assuming will have a formula Set rng = .Cells(2, 3) For i = 3 To lRow If .Cells(i, 3).Value = "" Then rng.Copy .Cells(i, 3) Next i End With End Sub 

在这里输入图像描述

注意 :对于您的情况,请根据需要进行修改。

编辑

我强烈推荐@Captains非VBA方式如上所示。 这里是代码,以防万一有人在寻找一个VBA选项。

 Sub Sample() Dim rng As Range, blnkRng As Range Dim lRow As Long, i As Long '~~> Change this to the relevant sheet name With ThisWorkbook.Sheets("Sheet1") lRow = .Range("A" & .Rows.Count).End(xlUp).Row '~~> C2 Which I am assuming will have a formula Set rng = .Cells(2, 3) On Error Resume Next Set blnkRng = .Range("C3:C" & lRow).SpecialCells(xlCellTypeBlanks) On Error GoTo 0 If Not blnkRng Is Nothing Then rng.Copy blnkRng End With End Sub 

如果你不想走VBA路线,你可以用内置的function来做到这一点:

  1. 使用公式复制单元格
  2. 突出显示目标范围,包括填充的单元格(例如整列)
  3. 在主页function区上,在编辑下,find并select打开“转到特殊”
  4. 在popup窗口中select“空白”,然后单击确定
  5. select将只更新为空白单元格,然后您可以粘贴

还有其他一些有用的东西在“转到特别”框!

要做到这一点与代码(假设你想复制到第10行):

范围(“C3:C10”)。SpecialCells(xlCellTypeFormulas).FormulaR1C1 = Range(“C2”)。FormulaR1C1