在AutoFilter中组合多个排除(<>)条件

den*_*isq 5 excel vba autofilter excel-vba

我通过使用这个肮脏的黑客解决了我的问题:

    ' Filter managerial functions
    ActiveSheet.Range("$A$1:$BW$2211").AutoFilter Field:=36, Criteria1:="<>Head*", _
    Criteria2:="<>IT*", Operator:=XlAutoFilterOperator.xlAnd
    ActiveSheet.Range("$A$1:$BW$2211").AutoFilter Field:=36, Criteria1:="<>Local Head*", _
    Criteria2:="<>Resp*", Operator:=XlAutoFilterOperator.xlAnd
    ActiveSheet.Range("$A$1:$BW$2211").AutoFilter Field:=36, Criteria1:="<>Team Lead*", _
    Criteria2:="<>XB*", Operator:=XlAutoFilterOperator.xlAnd
Run Code Online (Sandbox Code Playgroud)

有没有办法将这3个语句合并为一行?一旦我在一行中有第三个标准(Criteria3),Excel似乎就会出现问题.此外,似乎不支持<> Array().

Jon*_*n49 1

高级过滤器可能更适合此目的。

你也可以这样做:

Dim bUnion As Boolean
Dim i As Long
Dim vData As Variant
Dim rDataHide As Range

vData = Application.Transpose(ActiveSheet.Range("$AJ$1:$AJ$2211"))
bUnion = False

For i = 1 To 2211
  If LenB(vData(i)) Then
    If vData(i) Like Whatever Or vData(i) Like Whatever2 Then
      If bUnion Then
        Set rDataHide = Union(rDataHide, ActiveSheet.Range("$AJ$" & i))
      Else
        Set rDataHide = ActiveSheet.Range("$AJ$" & i)
        bUnion = True
      End If
    End If
  End If
Next i
rDataHide.Rows.Hidden = True
Run Code Online (Sandbox Code Playgroud)

你甚至可以使用 RegEx,但我之前并没有真正使用过 RegEx,所以你必须用谷歌搜索它。