我的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:="="
感谢您的回复!
答案 0 :(得分:3)
使用以下数据:
我会做一个副本而不是填充:
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 不受影响。
答案 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