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

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

    10-13 08:41