当前,我正在使用以下代码来检查特定范围的单元格中A列的#N / A值,如果找到,则删除该行。

With Sheets(Sheet)
        For LRow = 45 To 29 Step -1
            With .Cells(LRow, "A")
                If (CVErr(.Value) = CVErr(xlErrNA)) Then .EntireRow.Delete
            End With
        Next LRow
    End With


我需要扩展它,以便我检查所有的第1列到第10列,而不只是A列。我尝试了这种轻微的修改(嵌套另一个循环),但是它不起作用。有什么建议?

With Sheets(Sheet)
        For LRow = 45 To 29 Step -1
            For LCol = 10 To 1 Step -1
                With .Cells(LRow, LCol)
                    If (CVErr(.Value) = CVErr(xlErrNA)) Then .EntireRow.Delete
                End With
            Next LCol
        Next LRow
    End With

最佳答案

这里有两个问题:


嵌套
一旦找到N / A,就在任何给定的行上打开,您需要中止循环


尝试

Set sh = Sheets(Sheet)
For LRow = 45 To 29 Step -1
    For LCol = 10 To 1 Step -1
        If (CVErr(sh.Cells(LRow, LCol).Value) = CVErr(xlErrNA)) Then
            sh.Cells(LRow, 1).EntireRow.Delete
            Exit For ' Exit the LCol loop
        End If
    Next LCol
Next LRow

09-27 19:58