2011-10-05 14 views
5

ho lavorato intorno al mio problema utilizzando questo hack sporco:Combinare esclusione multipla (<>) criteri di filtro automatico

' 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 

Esiste un modo per combinare questi 3 affermazioni in una sola riga? Excel sembra avere un problema non appena ho un terzo criterio (Criteria3) in una riga. Inoltre, <> Array() sembra non essere supportato.

risposta

1

Un filtro avanzato potrebbe essere più adatto a questo scopo.

Si potrebbe anche fare qualcosa di simile:

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 

Si potrebbe anche usare RegEx, non ho veramente usato RegEx molto prima se così si dovrebbe google.

+0

AFAIK, ho bisogno di un intervallo nel mio foglio di lavoro per utilizzare il filtro avanzato. Preferisco avere un codice VBA puro con tutti i criteri in un array (che non funziona per <>). – denisq

+1

Se necessario, è possibile creare l'intervallo di filtro avanzato con VBA. o anche solo aggiungere una colonna di lavoro con un test OR, filtro automatico che, quindi distruggere la colonna di lavoro quando finito – brettdj

+0

Faccio quello che fa brettdj quando uso il filtro avanzato, creare l'intervallo di filtri e poi cancellarlo dopo aver finito di usarlo. Puoi anche provare ciò che ho messo sopra nella risposta modificata. – Jon49

Problemi correlati