删除列中包含错误的所有行

时间:2016-01-06 16:33:02

标签: excel vba excel-vba

我正在处理一个VBA代码,并且需要部分代码来删除工作表中列表中文本的所有行" J"是" #N / A"。我编写了一段代码但是在调试时遇到了类型不匹配错误。

这是代码

Dim i As Long
For i = Cells(Rows.Count, 10).End(xlUp).Row To 1 Step -1
If Cells(i, 10) = "#N/A" Then Cells(i, 1).EntireRow.Delete
Next i

2 个答案:

答案 0 :(得分:3)

Range.SpecialCells method xlSpecialCellsValue 常量一起用作 xlErrors ,以快速识别J列中的所有单元格,并显示错误。目前还没有公开细胞是公式还是类型常数,所以我添加了代码来检查xlCellType Enumeration类型。

Sub del_error_rows()
    With Worksheets("Sheet3")
        On Error Resume Next
        With .Columns(10).SpecialCells(xlCellTypeFormulas, xlErrors)
            .EntireRow.Delete
        End With
        With .Columns(10).SpecialCells(xlCellTypeConstants, xlErrors)
            .EntireRow.Delete
        End With
        On Error GoTo 0
    End With
End Sub

如果没有具有该特定错误配置的单元格,则On Error Resume Next是必需的。在这种情况下,SpecialCells将为Nothing,您必须绕过因尝试处理任何内容而引发的任何错误。

答案 1 :(得分:1)

试试这段代码:

Dim i As Long
For i = Cells(Rows.Count, 10).End(xlUp).Row To 1 Step -1
If Cells(i, 10).Text = "#N/A" Then Cells(i, 1).EntireRow.Delete
Next i