这应该可以解决问题:
ActiveSheet.Range("$A$5:$H$10").AutoFilter Field:=2, Criteria1:="=4*", _
Operator:=xlOr, Criteria2:=Array("*2TWH*","*2TER*")
这不会引发任何错误,但是它只会使用2个标准,因为有通配符(
*
)。这是来自数组的最后一个标准(在这里是
*2TER*
)。
理想情况下,这将是很好的,因为它适用于常量,但是因为你使用了通配符(
*
),它只支持两个标准... :/
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
,因此您需要在工作表上
放置以下内容:
- 要应用筛选器的列标题
- 各自标题下方的条件(如果有多个列)
该范围的每个列都由AND连接
该范围的每一行都由OR连接
因此,请仔细构建您的表格!
在上面的示例代码中,我使用了:
(假设您的列标题是Column To Filter On):
A1 | Column To Filter On
A2 | 4*
A3 | *2TWH*
A4 | *2TER*