Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba Excel:具有多个条件的筛选:自动筛选或高级筛选_Vba_Excel_Autofilter_Advanced Filter - Fatal编程技术网

Vba Excel:具有多个条件的筛选:自动筛选或高级筛选

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 我在谷歌上搜索了一下,发现可以将值存储到数组中,然后调用数组值,但我无法以可用的方式将它们放入数组中 有

我正在尝试创建一个过滤器,它将执行以下操作

以“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*


理想情况下,这会很好,因为它适用于常量,
但由于您使用通配符(
*
),因此它只支持两个条件…:/

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*