具有多个条件的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
以范围作为标准input , CriteriaRange
,所以你必须把一张表 :
- 要应用于filter的列的标题
- 您的标准下面的相应标题(如果你有多个列)
该范围的每个COLUMN都由AND 链接
该范围的每个ROW都通过OR 链接
所以仔细build立你的桌子!
在上面的示例代码中,我使用了:
(假设你的列标题是Column To Filter On ):
Z1 | Column To Filter On Z2 | 4* Z3 | *2TWH* Z4 | *2TER*