Excel vba仅自动填充空单元格

Excel vba仅自动填充空单元格,vba,excel,autofill,Vba,Excel,Autofill,我有一个a列,数据高达300 在此范围内,有些单元格为空,有些单元格包含值 在VBA中,我设置单元格A1的公式,然后使用“自动填充”功能将其设置在我的整个列中,直到达到300,如下所示: 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:="=

我有一个a列,数据高达300

在此范围内,有些单元格为空,有些单元格包含值

在VBA中,我设置单元格A1的公式,然后使用“自动填充”功能将其设置在我的整个列中,直到达到300,如下所示:

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:="="
我的问题是,一些单元格中包含的数据也被删除了!我试图像它一样自动填充,但只能通过空的单元格

我试图在我的工作表上添加一个过滤器,如下所示:

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:="="
然后我重新使用了自动填充功能,但它似乎填充了过滤后的单元格

我们不能在自动填充函数中添加一个参数,比如只清空单元格吗?大概是这样的:

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 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
数据如下:

我会复印一份,而不是填写:

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 my没有延伸到A300号牢房


例如,如果工作表除了A1中的公式和A3中的某个值外,其余均为空。在这种情况下,Rdest将仅包括单个单元格A2。代码将保持A4到A300不变。

您也可以使用以下代码:

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

你想用什么填充它们?静态值还是渐进值?请参阅使用xlCellTypeBlanks的。我对SpecialCellsxlCellTypeBlanks还有一个问题。它的结果是,若复制然后粘贴一个空单元格,这些单元格将不再被视为空白单元格,并且它不会被此代码选中,但此单元格仍然为空。这是一个已知的SpecialCellsxlCellTypeBlanks问题。因此,即使我有一个空白单元格,也可以得到“无单元格匹配”错误。你知道这个问题的解决方法吗?谢谢你的回答,这正是我需要的。为了方便起见,我已经对它提出了异议。当您删除一些数据或其他数据时,它似乎不会重新计算,但我可以在不使用usedrange的情况下实现这一点。再次感谢!我对SpecialCellsxlCellTypeBlanks还有一个问题。它的结果是,若复制然后粘贴一个空单元格,这些单元格将不再被视为空白单元格,并且它不会被此代码选中,但此单元格仍然为空。这是一个已知的SpecialCellsxlCellTypeBlanks问题。因此,即使我有一个空白单元格,也可以得到“无单元格匹配”错误。你知道这个问题的解决方法吗?谢谢,这是最简单的答案!我对SpecialCellsxlCellTypeBlanks还有一个问题。它的结果是,若复制然后粘贴一个空单元格,这些单元格将不再被视为空白单元格,并且它不会被此代码选中,但此单元格仍然为空。这是一个已知的SpecialCellsxlCellTypeBlanks问题。因此,即使我有一个空白单元格,也可以得到“无单元格匹配”错误。你知道这个问题的解决方法吗?不完全确定问题出在哪里。。第一行查找所有空单元格并将其选中,第二行将A1中的值输入到所选单元格中,这样就不会出现。。除非你的单元格中有一个不被视为空白的空格-这是怎么回事?我使用的公式是在单元格上输入一个值,或者输入。所以第一次,我的手机是空的,然后公式放在上面。第二次运行宏结果时出错。基本上,VBA认为具有的单元格不是空白。空白单元格是未初始化的单元格。放在一个单元格中初始化它。specialcellsxlCellTypeBlanks没有将初始化的空单元格视为空单元格,因此它会导致错误…如果您能够理解法语,本主题将清楚地解释问题:谢谢,此代码也可以工作,即使它比Jeremy的答案更复杂。谢谢,顺便说一句!我对SpecialCellsxlCellTypeBlanks还有一个问题。它的结果是,若复制然后粘贴一个空单元格,这些单元格将不再被视为空白单元格,并且它不会被此代码选中,但此单元格仍然为空。这是一个已知的SpecialCellsxlCellTypeBlanks问题。因此,即使我有一个空白单元格,也可以得到“无单元格匹配”错误。您知道这个问题的解决方案吗?谢谢,您的代码适用于A1:A300范围,但我以is为例,我真正的工作簿将有超过10k行,我希望避免循环。但是谢谢你的帮助!