我正在尝试创建一个将执行以下操作的过滤器
以“4”或“开始”开头 包含“2TWH”或 包含“2TER”
我相信它会看起来像这样
ActiveSheet.Range("$A$5:$H$10").AutoFilter Field:=2, Criteria1:="=4*", _
Operator:=xlOr, Criteria2:="=*2TWH*"
但我还需要以某种方式对=“= 2TER ”进行标准3
我做了一些谷歌搜索,看到你可以将值存储到数组中,然后调用数组值,但我无法以可用的方式将它们放入数组中。
有人能为此提供一些帮助吗?
答案 0 :(得分:2)
这应该可以解决问题:
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:=WsFilterSettings.Range("A1:A4")
End With 'ActiveSheet
AdvancedFilter
将范围作为条件输入,CriteriaRange
,因此您必须放一张表:
该范围的每个 COLUMN 链接 AND
该范围的每个 ROW 通过 OR 链接
所以仔细建立你的桌子!
在上面的示例代码中,我使用了:
(让我们说列标题是要过滤的列):
A1 | Column To Filter On
A2 | 4*
A3 | *2TWH*
A4 | *2TER*