Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如果列值为#N/V,则删除行_Excel_Vba - Fatal编程技术网

Excel 如果列值为#N/V,则删除行

Excel 如果列值为#N/V,则删除行,excel,vba,Excel,Vba,我只是想知道是否有人能帮我了解手机的价值。 如果列A中的单元格值为#N/V,我将尝试删除整行。我几乎什么都试过了。这是我的密码: For Each ws In Sheets(Array("List")) lastRow = ws.Range("A" & Rows.Count).End(xlUp).row For i = 1 To lastRow If ws.Cells(i, 1).Text = "#N/V" Then ws.Cells(i).De

我只是想知道是否有人能帮我了解手机的价值。 如果列A中的单元格值为
#N/V
,我将尝试删除整行。我几乎什么都试过了。这是我的密码:

For Each ws In Sheets(Array("List"))
   lastRow = ws.Range("A" & Rows.Count).End(xlUp).row
   For i = 1 To lastRow
      If ws.Cells(i, 1).Text = "#N/V" Then
         ws.Cells(i).Delete
      End If
   Next i
Next
关于@Grade'Eh'Bacon的建议:

For Each ws In Sheets(Array("List"))
        lastRow = ws.Range("A" & Rows.Count).End(xlUp).row
        For i = lastrow To 1 step -1
          If ws.Cells(i, 1).Text = "#N/V" Then
             ws.Cells(i,1).entirerow.Delete

          End If
        Next i
Next
使用自动筛选功能:

Dim lastRow As Long
lastRow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row

With Range("A1:A1")
    .select
    If ActiveSheet.AutoFilterMode Then
      .AutoFilter field:=1, Criteria1:="#N/V"
      .Range("A1:A" & lastRow).SpecialCells(xlCellTypeVisible).EntireRow.Delete
    End If
End With

如果要删除列A中所有类型错误的行,可以使用
SpecialCells
方法在单个语句中查找并删除它们:

Range("A:A").SpecialCells(xlCellTypeFormulas, xlErrors).EntireRow.Delete

我建议你编辑一下,让我回过头来看看,比如:“对于我来说,最后一行是1步-1”;因为否则删除一行将跳过“下一行”,因为接下来的所有行将下降1,同时计数器将上升1。我一开始也考虑过这一点,并在过去几分钟内确定了这一点。我看到您的编辑在删除一行的地方使I=I-1;然而,在我看来,这不如使用Excel的自然逻辑简单地从底部开始向上移动那么清楚。这里没有特别的原因说明为什么它需要从1开始,因此简单地使用“For i=lastRow to 1 Step-1”而不是“For i=1 to lastRow”更简洁。虽然我同意你的方法可以防止“跳过行”。当然,你的建议是一个更漂亮的解决方案。在这种情况下,我想到了我开始编程的时候。对我来说,从上到下理解这个程序比较容易。如果你真的想变得有趣和高效,你应该使用自动筛选,一次删除行,而不是循环。
Range("A:A").SpecialCells(xlCellTypeFormulas, xlErrors).EntireRow.Delete