我需要删除一些包含特定数据的行,当有两个或两个以上的条件时。
我有这样的代码:
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