VBA自动筛选排除多个条件

VBA自动筛选排除多个条件,vba,filter,Vba,Filter,我需要从一个范围中排除多个条件。下面的代码不会出错,但不会过滤掉所有值(例如“ZL1”仍在范围内)。我尝试了运算符:=xlAnd,但结果没有什么不同。通过运算符:=xlFilterValues,我得到“运行时错误'1004”:Range类的自动筛选方法失败 Sub Macro1() Sheets("Z").Select myarr = Array("<>ZC1", "<>ZL1", "<>ZF1") lr = Range("A" &am

我需要从一个范围中排除多个条件。下面的代码不会出错,但不会过滤掉所有值(例如“ZL1”仍在范围内)。我尝试了运算符:=xlAnd,但结果没有什么不同。通过运算符:=xlFilterValues,我得到“运行时错误'1004”:Range类的自动筛选方法失败

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
Sub宏1()
图纸(“Z”)。选择
myarr=数组(“ZC1”、“ZL1”、“ZF1”)
lr=范围(“A”和Rows.Count).End(xlUp).Row
ActiveSheet.Range(“$A$1:$M$”&lr)。自动筛选字段:=3,运算符:=xlOr,标准1:=(myarr)
端接头

正如上面评论中提到的Ibo,您不能像那样直接使用AutoFilter来排除3个或更多的值。这与您的情况有关。下面是一个示例方法:

  • 在O2单元中,输入
    =ISNA(匹配(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
在运行宏之前:

在AdvancedFilter宏之后:


能否包含样本数据的快照以及您希望过滤数据的外观?我只希望该范围排除列C的值为“ZC1”、“ZL1”或“ZF1”的任何行“@JamesSteele这是无法使用VBA的情况之一。你必须使用变通方法。创建一个helper列,如果第3列中存在这些值中的任何一个,则helper列应显示0,否则显示1。然后在“帮助器”列上创建一个自动筛选,筛选值为1。这里有一篇博文: