具有多个条件的Excel自动filter

我正在尝试创build一个自动filter来执行下面的操作

开始于“4”或包含“2TWH”或包含“2TER”

我相信它会变成这样的样子

ActiveSheet.Range("$A$5:$H$10").AutoFilter Field:=2, Criteria1:="=4*", _ Operator:=xlOr, Criteria2:="=*2TWH*" 

但我需要以某种方式还有一个标准3 for =“= 2TER

我做了一些Googlesearch,看到你可以将值存储到一个数组,然后调用数组值,但我无法以可用的方式将它们放入数组中。

有没有人能够提供一些援助呢?

这应该做的伎俩:

 ActiveSheet.Range("$A$5:$H$10").AutoFilter Field:=2, Criteria1:="=4*", _ Operator:=xlOr, Criteria2:=Array("*2TWH*","*2TER*") 

这不会抛出任何错误,但…
只会采用2个标准,因为有通配符( * )。
这里是数组的最后一个标准(这里是*2TER*


理想情况下,这将是很好的,因为它适用于常量
但由于您使用WildCards( * ),它只支持2个标准…:/

 ActiveSheet.Range("$A$1:$H$10").AutoFilter Field:=2, Criteria1:=Array("*2TWH*", "*2TER*", "4*"), _ Operator:=xlFilterValues 


所以你必须使用AdvancedFilter

 With ActiveSheet 'Const xlFilterInPlace = 1 .Range("$A$5:$H$10").AdvancedFilter _ Action:=xlFilterInPlace, _ CriteriaRange:=.Range("Z1:Z4") End With 

AdvancedFilter范围作为标准inputCriteriaRange ,所以你必须把一张表

  • 要应用于filter的列标题
  • 您的标准下面的相应标题(如果你有多个列)

该范围的每个COLUMN都由AND 链接
该范围的每个ROW都通过OR 链接
所以仔细build立你的桌子!

在上面的示例代码中,我使用了:
(假设你的列标题Column To Filter On ):

 Z1 | Column To Filter On Z2 | 4* Z3 | *2TWH* Z4 | *2TER*