Excel vba自动填充仅空单元格

时间:2016-09-15 14:58:22

标签: excel vba excel-vba autofill

我的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$1:$A$300").AutoFilter Field:=1, Criteria1:="="

然后我重新使用了自动填充功能,但它似乎填满了过滤后的细胞...

我们不能在自动填充功能中添加像“只清空单元格”这样的参数吗?像这样:

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

感谢您的回复!

4 个答案:

答案 0 :(得分:3)

使用以下数据:

enter image description here

我会做一个副本而不是填充:

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

有了这个结果:

enter image description here

注:

复制后公式会调整。

修改#1:

请注意,在某些情况下,此代码无法使用。有可能UsedRange我没有延伸到单元 A300

例如,如果工作表完全为空,则 A1 中的公式和 A3 中的某个值除外。在这种情况下,Rdest将仅包含单个单元格 A2 。该代码将保持 A4 A300 不受影响。

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

您还可以使用以下代码:

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

答案 3 :(得分:1)

道歉,我想念你的问题 - 想要用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