所以我有一张很棒的excel表,在不同的位置有一堆空单元格。我希望能够轻松处理哪些单元格为空的列表。我希望制作一个填充了空单元格位置的新工作表。我想让它只填充我想要的单元格。我保留了我将检查的工作表中的标题并添加了空白单元格数,因此我希望列中的以下单元格由空单元格位置列表填充。
现在我知道我可以使用=ISBLANK
来测试一个单元格是否为空,但我只关心返回TRUE
的单元格。所以我认为我需要loop。我想要单元格的位置,以便我可以使用=CELL
。为了使这个最具可读性,我希望逐列进行。
但我希望以与函数工作方式类似的方式填充包含此信息的电子表格(我只想将其复制并粘贴到其他单元格和列中)。但它是pretty clear that I am going to need VBA。
我的问题是如何创建一个宏来填充我的电子表格中的空单元格列表?如何将其应用于细胞?
答案 0 :(得分:4)
我假设你在sheet1中有数据,我使用了样本范围//范围(" A1:c15")但是你可以根据需要定义范围,空白单元格地址将在下一张表中公布。
Sub FindBlank()
Dim rng As Range
dim i as long
For Each rng In Sheet1.Range("A1:c15").SpecialCells(xlCellTypeBlanks)
i = i + 1
Sheet2.Cells(i, 1) = rng.Address
Next
End Sub
答案 1 :(得分:3)
如果您想要一个空单元格列表,可以使用Range().SpecialCells(xlCellTypeBlank)
:
Sub getEmptyCellAddresses()
Dim rng As Range
Dim ws as Worksheet
Set ws = Sheets("Sheet1") ' CHANGE AS NECESSARY
Set rng = ws.Range("A1:A15").SpecialCells(xlCellTypeBlanks) ' Edit/change range as necessary
ws.Cells(1, 2).Value = rng.Cells.Address ' Change `ws.cells(1, 2)` to whatever destination you like
End Sub
编辑:啊,@RamAnuragi打了16秒......但是不管怎么说,他们解决这个问题的方式略有不同,所以我会离开它。
编辑:对于funsies,这里有另一种方法可以将它们全部放在一列中,每个单元格一行......等等,根据您的评论。
Sub listEmptyCells()
Dim emptyAddresses() As String
Dim i As Long
Dim ws As Worksheet
Dim rng As Range
Set ws = Sheets("Sheet1") ' CHANGE AS NECESSARY
Set rng = ws.Range("A1:A15")
If WorksheetFunction.CountBlank(rng) = 0 Then
MsgBox ("No empty cells in the range")
Exit Sub
End If
emptyAddresses() = Split(rng.SpecialCells(xlCellTypeBlanks).Address, ",")
For i = LBound(emptyAddresses) To UBound(emptyAddresses)
ws.Cells(i + 1, 2).Value = emptyAddresses(i)
Next i
End Sub