Объединить критерии множественного исключения (<>) в автофильтре - PullRequest
5 голосов
/ 05 октября 2011

Я обошел свою проблему с помощью этого грязного хака:

    ' 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

Есть ли способ объединить эти 3 утверждения в одну строку?Кажется, в Excel возникла проблема, как только у меня появился третий критерий (Критерий3) в одной строке.Кроме того, <> Array () не поддерживается.

1 Ответ

1 голос
/ 05 октября 2011

Для этой цели лучше подойдет расширенный фильтр.

Вы также можете сделать что-то вроде этого:

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

Вы могли бы даже использовать RegEx, хотя я и раньше не особо использовал RegEx, поэтому вам придется поискать его в Google.

...