繁体   English   中英

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

然后我重用了自动填充功能,但是似乎可以填充过滤后的单元格...

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

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

多谢您的回覆!

像这样的数据:

在此处输入图片说明

我会做一个副本而不是填写以下内容:

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保持不变。

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

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

您还可以使用以下代码:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM