如何检查无价值细胞?

时间:2014-04-25 21:18:03

标签: excel excel-vba vba

我需要删除所有不包含值的行。如果某行包含公式或格式但没有值,则将其删除

以下工作仅适用于没有值和公式的行

Sub test()
 [a:a].SpecialCells(xlBlanks).EntireRow.Delete
End Sub

但是,如果A单元格包含公式,则上述内容不会删除行。我该如何改进呢?

3 个答案:

答案 0 :(得分:1)

试试这个:

Sub CleanupCrew()

    Set wb = ThisWorkbook
    Set ws = wb.Sheets(1) 
                      'Replace 1 with either the number of your sheet or "itsName"

    last = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    For x = last to 1 Step -1
        If ws.Cells(x, 1) = "" Or ws.Cells(x, 1).Formula <> "" Then
            ws.Rows(x).Delete
        End If
    Next x

End Sub

它将循环遍历所有行(从最后一个开始)并删除所有那些没有值或A列中的公式。希望这是你要找的。如果没有,请告诉我,我会提供更多支持!

答案 1 :(得分:1)

您可以在范围对象上使用方法HasFormula

Range.HasFormula
如果范围包含公式,

将返回true,否则返回false。

答案 2 :(得分:1)

也许是这样的事情:

Sheet1.AutoFilterMode = False
[a:a].AutoFilter 1, "="
[a:a].Resize(Rows.Count - 1).Offset(1, 0).SpecialCells( _
    xlCellTypeVisible).EntireRow.Delete
Sheet1.AutoFilterMode = False

Sheet1是您正在处理的工作表代号 所以基本上,这会过滤所有Blanks并删除它,无论它是No value空白还是Formula空白(例如=“”)