Vba Excel:具有多个条件的筛选:自动筛选或高级筛选
我正在尝试创建一个过滤器,它将执行以下操作 以“4”开头或 包含“2TWH”或 包含“2TER” 我相信结果会是这样的Vba Excel:具有多个条件的筛选:自动筛选或高级筛选,vba,excel,autofilter,advanced-filter,Vba,Excel,Autofilter,Advanced Filter,我正在尝试创建一个过滤器,它将执行以下操作 以“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:="=*2TWH*"
但我还需要为=“=2TER”设定一个标准3
我在谷歌上搜索了一下,发现可以将值存储到数组中,然后调用数组值,但我无法以可用的方式将它们放入数组中
有人能提供一些帮助吗?这应该可以做到:
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
,因此您必须放在一张纸上:
- 要应用于上的筛选器的列的标题
- 您的标准位于相应标题下方(如果有多个列)
该范围内的每一行都由一个或
因此,请仔细建造您的桌子 在上面的示例代码中,我使用了:
(假设您的列的标题是要筛选的列):
我喜欢这个想法,但我需要数组值为=“=*2TWH*”而不仅仅是“2TWH”等等@MathewHood:请参见编辑!不,您不需要,只使用数组中的2个参数测试第二个代码,您将看到您不需要
=
!;)无论如何,享受高级过滤器吧!;)@模拟器:字母表中“N”的位置;)@我的错:)。尽管出于某种原因,高级筛选器返回的是所有行,而不是与通配符匹配的列。实际上,我尝试在不使用列标题的情况下使用高级筛选器,但最终使用了它,效果很好。
A1 | Column To Filter On
A2 | 4*
A3 | *2TWH*
A4 | *2TER*