VBA自动过滤器排除多个标准

时间:2017-07-31 16:31:59

标签: vba filter

我需要从范围中排除多个条件。下面的代码没有错误,但它没有过滤掉所有值(例如" ZL1和#34;仍然在范围内)。我试过运算符:= xlAnd但结果没有什么不同。使用Operator:= xlFilterValues我得到"运行时错误' 1004':Range类的AutoFilter方法失败。

Sub Macro1()
    Sheets("Z").Select
    myarr = Array("<>ZC1", "<>ZL1", "<>ZF1")
    lr = Range("A" & Rows.Count).End(xlUp).Row
    ActiveSheet.Range("$A$1:$M$" & lr).AutoFilter Field:=3, Operator:=xlOr, Criteria1:=(myarr)
End Sub

1 个答案:

答案 0 :(得分:1)

正如Ibo在上面的评论中提到的,您不能直接使用AutoFilter来排除3个或更多值。 This particular post与您的情况相关。以下是一种示例性方法:

  • 在单元格O2中,放置=ISNA(MATCH(C2, $P$2:$P$4,0))
  • 在P2到P4中,将过滤器值ZC1,ZL1和ZF1放在不同的单元格中。

然后运行此宏:

Sub Macro2()
    lr = Range("A" & Rows.Count).End(xlUp).Row
    Range("$A$1:$M$" & lr).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("O1:O2"), Unique:=False
End Sub

在运行宏之前:

Table showing setup

在AdvancedFilter宏之后:

Table after advanced filter