当有2个或更多条件时,我需要删除一些包含特定数据的行。
我有这样的代码:
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
但最后,它会删除第1行以外的所有内容。
然而,当我只有一个条件时,代码工作正常:
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”。
有什么不对,为什么当我把第二个条件和/或不按照我希望的方式工作时?
答案 0 :(得分:0)
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
答案 1 :(得分:0)
这里是您更新的代码,请尝试:
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