2011-10-05 8 views
5

mam obejść mój problem przy użyciu tej brudnej Hack:łączenia wielu wykluczenia (<>) Kryteria w Autofiltru

' 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 

Czy istnieje jakiś sposób, aby połączyć te 3 oświadczenia w jednej linii? Wydaje się, że Excel ma problem, gdy tylko mam trzecie kryterium (Criteria3) w jednym wierszu. Ponadto, wydaje się, że obsługa <> Array() nie jest obsługiwana.

Odpowiedz

1

Zaawansowany filtr może być bardziej odpowiedni do tego celu.

Można też zrobić coś takiego:

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 

Można nawet użyć wyrażenia regularnego, ja naprawdę nie używany RegEx znacznie wcześniej, choć tak trzeba by go google.

+0

AFAIK, potrzebuję zakresu w moim arkuszu roboczym, aby użyć zaawansowanego filtru. Wolę mieć czysty kod VBA ze wszystkimi kryteriami w jednej tablicy (która nie działa dla <>). – denisq

+1

W razie potrzeby można utworzyć zaawansowany zakres filtru z VBA. a nawet po prostu dodaj kolumnę roboczą z testem OR, Autofiltr, a następnie zniszcz kolumnę roboczą po zakończeniu – brettdj

+0

Robię to, co robi brettdj, kiedy używam filtra zaawansowanego, stwórz zakres filtru, a następnie usuń go, gdy skończę go używać. Możesz także spróbować tego, co umieściłem powyżej w edytowanej odpowiedzi. – Jon49

Powiązane problemy