2011-10-05 5 views
5

で複数の除外(<>)の基準を組み合わせる私はこの汚いハックを使用して、私の問題に取り組んできました:がオートフィルタ

' 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 

は、1行にこれらの3文を結合する方法はありますか? 1行に3つ目の基準(Criteria3)があるとすぐExcelに問題があるようです。さらに、<> Array()はサポートされていないようです。

答えて

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 

あなたも、正規表現を使用することができ、私は本当に多くの前にあなたはそれをグーグルしなければならないのに正規表現を使用していません。

+0

AFAIK、高度なフィルタを使用するには、ワークシートの範囲が必要です。私は1つの配列(<>では動作しません)内のすべての基準を持つ純粋なVBAコードを持つことを好みます。 – denisq

+1

必要に応じてVBAを使用して高度なフィルタ範囲を作成することができます。 ORテスト、オートフィルタを使用して作業列を追加し、終了時に作業列を破棄します。 – brettdj

+0

高度なフィルタを使用するときにbrettdjが実行する処理を行い、フィルタ範囲を作成してから使用した後に削除します。あなたは編集した答えに私が上に置いたものを試すこともできます。 – Jon49

関連する問題