【EXCEL VBA | オートフィルター 】データを絞り込む

スポンサーリンク

データを絞り込むオートフィルター

指定したセル範囲の中で、条件に合致するセルを検索出来ます(^o^)

構文

Rangeオブジェクト.AutoFilter Field, Criteria1, Operator, Criteria2

Field・・・どの列で絞り込みを行うのか指定します。フィルターの範囲の左から1、2、3となります。

Criteria1・・・絞り込みの条件を指定します。「””」でくくります。”ひらちん”とか”>50”とかです。ちなみに、空白セルの指定は”=”、空白以外のセルの指定は、”<>”になります。

Operator・・・色々あるんですが、ここでは条件を2つ指定するときに使う”xlOr””xlAnd”だけ記します。

Criteria2・・・絞り込みの条件の2つ目を指定します。前の引数「Operator」とセットです。


※ちなみに、3つ以上の条件を指定したい場合は、 Criteria1 に配列を指定して、Operator”xlFilterValue”を指定します。


サンプル

次のシートで、A列が”ひらちんの部屋”のデータを絞り込みます。

次のコードを実行します。

Sub sample()

    ActiveSheet.Range("A1").AutoFilter 1, "ひらちんの部屋"
    
End Sub

Fieldは、一番左の列なので「1」、 Criteria1絞り込み条件)には「ひらちんの部屋」を指定します。OperatorCriteria2は省略しています。

RangeオブジェクトはA1セルを指定していますが、これは表の中ならどこでもOKです。ワークシート上でも同じですが、EXCELが自動的に表の範囲を捕まえてくれます。賢いですね~、

実行結果は次です。

ひらちんの部屋だけで絞り込まれましたね(^o^)

今度は”ひらちんの部屋”と”信長の野望”の2つで絞り込んでみましょう。

Sub sample()

    ActiveSheet.Range("A1").AutoFilter 1, "ひらちんの部屋", xlOr, "信長の野望"
    
End Sub

先程のコードの続きに、OperatorxlOr、これは、”あるいは”と言う意味です。Criteria2”信長の野望”を指定します。

実行すると、次のようになります。

OKですね(^o^)

では、次にB列の数値で絞り込みをしてみましょう。

「スコアが300以上で且つ500以下」の条件を絞り込みます。

Sub sample()

    ActiveSheet.Range("A1").AutoFilter 2, ">=300", xlAnd, "<=500"
    
End Sub

コードはこのようになります。

スコアはB列なので、Fieldは「2」です。Criteria1 (絞り込み条件)には「>=300」を指定します。Operatorは、且つなので「xlAnd」、Criteria2は「<=500」ですね。

実行します。

じゃん!OKですね。

最後に、3つ以上の絞り込み条件だけやっときましょう!

この場合は。 Criteria1 に配列を指定して、Operator”xlFilterValue”を指定します。

では、A列が、”ひらちんの部屋”、”信長の野望”、”日本の宝”の3つを抽出します。

コードは次です。

Sub sample()

    ActiveSheet.Range("A1").AutoFilter 1, Array("ひらちんの部屋", "信長の野望", "日本の宝"), xlFilterValues
    
End Sub

絞り込み条件の場所に、「Array("ひらちんの部屋", "信長の野望", "日本の宝")」とArray関数で配列を作成しています。

もちろん、別の場所で配列を作って後で入れてもOKです。

Sub sample()

    Dim arr(2) 
    arr(0) = "ひらちんの部屋"
    arr(1) = "信長の野望"
    arr(2) = "日本の宝"
    
    ActiveSheet.Range("A1").AutoFilter 1, arr, xlFilterValues
    
End Sub

実行すると、

指定した通り3つの絞り込み条件が適応されていますね(^o^)