Excel vba 仅自动填充空单元格

Excel vba Autofill only empty cells

我有一个 A 列,其中的数据最多为 A300。

在此范围内,这些单元格中有些是空的,有些包含值。

在 VBA 中,我设置单元格 A1 的公式,然后使用自动填充功能在我的列(最多 A300)中设置它,如下所示:

ws.Range("A1").Select
Selection.AutoFill Destination:=ws.Range(ws.Cells(1, 1), ws.Cells(300, 1))

我的问题是某些单元格中包含的数据也被删除了!我正在尝试像它一样自动填充,但只能通过空单元格。

我试过像这样在我的工作表上添加过滤器:

ws.Range("$A:$A0").AutoFilter Field:=1, Criteria1:="="

然后我重新使用了自动填充功能,但它似乎填充了过滤后的单元格...

我们不能在自动填充函数中添加 "only empties cells" 这样的参数吗?像这样:

Selection.AutoFill Destination:=ws.Range(ws.Cells(1, 1), ws.Cells(300, 1)), Criteria1:="="

感谢您的回复!

假设您需要静态值,我会使用循环。下面的那个将用便便填充所有空单元格:

Sub AllFillerNoKiller()
Dim ws As Worksheet
Set ws = Worksheets("Sheet1")

For Each c In ws.Range("A1:A300")
    If c.Value = "" Then c.Value = "poop"
Next
End Sub

数据如下:

我会做一个副本而不是一个 fill-down:

Sub luxation()
    Range("A1").Formula = "=ROW()"
    Dim rDest As Range
    Set rDest = Intersect(ActiveSheet.UsedRange, Range("A1:A300").Cells.SpecialCells(xlCellTypeBlanks))

    Range("A1").Copy rDest
End Sub

结果如下:

注意:

公式复制后调整。

编辑#1:

请注意,在某些情况下此代码将不起作用。 UsedRange 我可能没有延伸到单元格 A300

例如,如果工作表除了 A1 中的公式和 A3 中的一些值外完全是空的。在这种情况下 Rdest 将只包含单个单元格 A2。该代码将使 A4A300 保持不变。

您也可以使用以下代码:

stAddress = Sheet1.Range("A1").CurrentRegion.SpecialCells(xlCellTypeBlanks).Address
Sheet1.Range(st).Value = "Empty"

抱歉,我没理解你的问题 - 想用 A1 中的值填充所有空白单元格吗? - 给你:

Sub Replace()

If Trim(Range("A1").Value) = "" Then
    MsgBox "There's no value in A1 to copy so there's nothing to copy to all blank cells", vbInformation, "Nothing in A1"
    Exit Sub
    Else
        Range("A1:A300").SpecialCells(xlCellTypeBlanks).Select
        Selection.Value = Range("A1").Value
End If

End Sub