Excel空白单元格列表

时间:2017-05-03 18:14:48

标签: excel excel-vba vba

所以我有一张很棒的excel表,在不同的位置有一堆空单元格。我希望能够轻松处理哪些单元格为空的列表。我希望制作一个填充了空单元格位置的新工作表。我想让它只填充我想要的单元格。我保留了我将检查的工作表中的标题并添加了空白单元格数,因此我希望列中的以下单元格由空单元格位置列表填充。

现在我知道我可以使用=ISBLANK来测试一个单元格是否为空,但我只关心返回TRUE的单元格。所以我认为我需要loop。我想要单元格的位置,以便我可以使用=CELL。为了使这个最具可读性,我希望逐列进行。

但我希望以与函数工作方式类似的方式填充包含此信息的电子表格(我只想将其复制并粘贴到其他单元格和列中)。但它是pretty clear that I am going to need VBA

我的问题是如何创建一个宏来填充我的电子表格中的空单元格列表?如何将其应用于细胞?

2 个答案:

答案 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