[英]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 。 该代码将使A4到A300保持不变。
假设您需要静态值,我将使用循环。 下面的一个将用便便填充所有空单元格:
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.