我的10列(A-J)中有2列(A和D),有2种值:" OK"或者"不行"。我想过滤所有的行至少有一个" NOT OK"。我还希望它在运行宏之后自动出现过滤器(在标题为行(1)),以便我可以在之后使用它。但是,我的代码不起作用。
with wb1.Sheets(3)
.Range("A1:J1").AutoFilter
.Range("A1:J1").AutoFilter Field:=1, Criteria1:="NOT OK", _ Operator:=xlOr, Field:=4, Criteria1:="NOT OK"
End with
这可行吗?提前谢谢。
答案 0 :(得分:1)
最好的方法是添加一个新列,其中包含检查所有要求的公式,之后您可以对该新列进行过滤。
答案 1 :(得分:0)
高级过滤器可以设置复杂的条件。我们可以暂时使用可用的放置过滤器范围然后清除它。
With wb.Worksheets("Sheet3")
.Range("AA1:AB1").value = Array("ColA", "ColJ")
.Range("AA2:AB2").value = Array("NOT OK", "")
.Range("AA3:AB3").value = Array("", "NOT OK")
.Columns("A:J").AdvancedFilter xlFilterInPlace, .Range("AA1:AB3")
.Range("AA1:AB3").ClearContents ' clear it after dome with it
End With
同样的想法可以应用于普通Autofilter
,但暂时使用一些未使用的列来生成过滤条件为布尔值。例如,使用列AA
(= 27)
With wb.Worksheets("Sheet3")
.Range("AA2:AA1000").Formula = "=OR(A2=""NOT OK"", J2=""NOT OK"")"
.Range("A1:AA1000").AutoFilter 27, True
.Columns("AA").Delete xlToLeft
End With