如何使用VBA根据更多的标准删除Excel中的行



我需要删除一些包含特定数据的行,当有两个或两个以上的条件时。

我有这样的代码:

For i = Cells(Rows.Count, "A").End(xlUp).Row To 2 Step -1
    If Cells(i, "D") <> "xx" Or Cells(i, "D") <> "xxx" Then Cells(i, "A").EntireRow.Delete         
Next i

但是最后,它删除除第一行以外的所有内容。

然而,当我只有一个条件时,代码工作得很好:

  For i = Cells(Rows.Count, "A").End(xlUp).Row To 2 Step -1
  If Cells(i, "D") <> "xx" Then Cells(i, "A").EntireRow.Delete

这将删除除行之外的所有内容,其中包含d列中的'xx'。

出了什么问题,为什么当我输入第二个条件和或时,没有按我希望的方式工作?

你的AND/OR逻辑有一个小缺陷:

Sub qwerty()
   For i = Cells(Rows.Count, "A").End(xlUp).Row To 2 Step -1
       If Cells(i, "D") = "xx" Or Cells(i, "D") = "xxx" Then
       Else
          Cells(i, "A").EntireRow.Delete
       End If
   Next i
End Sub

这里是你更新的代码,试试吧:

For i = Cells(Rows.Count, "A").End(xlUp).Row To 2 Step -1
    If Not (Lcase(Cells(i, "D")) = "xx" Or Lcase(Cells(i, "D")) = "xxx") Then Cells(i, "A").EntireRow.Delete         
Next i

Lcase已添加以消除大小写敏感性,因为"XX" = "xx"将返回false,但Lcase("XX") = "xx"将返回true

最新更新