2011-10-05 7 views
5

yılında kriterleri:çoklu dışlama birleştirin (<>) bu kirli kesmek kullanarak benim soruna çalışmış AutoFilter

' 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 

bir hizaya bu 3 ifadeleri birleştirmek için herhangi bir yolu var mı? Excel, bir satırda üçüncü bir kritere (Kriter 3) sahip olduğumda bir problem gibi görünüyor. Ayrıca, <> Array() desteklenmiyor gibi görünüyor.

cevap

1

Gelişmiş bir filtre, bu amaç için daha uygun olabilir.

Ayrıca böyle bir şey yapabileceğini:

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 

Hatta RegEx kullanabilirsiniz, ben gerçekten çok önce bu kadar bunu google zorunda kalacak olsa RegEx kullanmadım.

+0

AFAIK, Gelişmiş filtreyi kullanmak için çalışma sayfamda bir aralığa ihtiyacım var. Tek bir dizide tüm ölçütlere sahip saf VBA koduna sahip olmayı tercih ederim (<> için çalışmaz). – denisq

+1

Gerektiğinde VBA ile gelişmiş filtre aralığını oluşturabilirsiniz. veya sadece bir OR testi ile çalışma sütunu ekleyin, AutoFilter o zaman işleyen sütunu yıkadıktan sonra – brettdj

+0

o zaman gelişmiş filtreyi kullandığımda brettdj'nin ne yaptığımı yaparım, filtre aralığını oluşturup kullanıyorum. Ayrıca, düzenlenmiş cevaba koyduğum şeyi de deneyebilirsiniz. – Jon49

İlgili konular