我正在尝试创建一个过滤器,它将执行以下操作
以“4”或
包含“2TWH”或
包含“2TER”
我相信它会变成这样
ActiveSheet.Range("$A$5:$H$10").AutoFilter Field:=2, Criteria1:="=4*", _
Operator:=xlOr, Criteria2:="=*2TWH*"
但我需要以某种方式为 ="=2TER"设置一个标准 3
我做了一些谷歌搜索,发现您可以将值存储到数组中,然后调用数组值,但我无法以可用的方式将它们放入数组中。
有没有人可以提供一些帮助?
最佳答案
这应该可以解决问题:
ActiveSheet.Range("$A$5:$H$10").AutoFilter Field:=2, Criteria1:="=4*", _
Operator:=xlOr, Criteria2:=Array("*2TWH*","*2TER*")
这不会引发任何错误,但是......
只需要 2 个条件,因为有通配符(
*
)。 这是数组中的最后一个条件(这里是
*2TER*
)理想情况下,这会很好,因为它适用于常量,
但是因为你 使用通配符(
*
)它只支持 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
,因此您必须将 放在一张表 上:该范围的每个 列 都由 AND 链接
该范围的每个 ROW 都由 OR 链接
所以要小心地 build 你的 table !
在上面的示例代码中,我使用了:
(假设您的 列的标题 是要过滤的列):
A1 | Column To Filter On
A2 | 4*
A3 | *2TWH*
A4 | *2TER*
关于vba - Excel : filter with Multiple Criteria : AutoFilter or AdvancedFilter,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42803528/