データを絞り込むオートフィルター
指定したセル範囲の中で、条件に合致するセルを検索出来ます(^o^)
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 (絞り込み条件)には「ひらちんの部屋」を指定します。OperatorとCriteria2は省略しています。
RangeオブジェクトはA1セルを指定していますが、これは表の中ならどこでもOKです。ワークシート上でも同じですが、EXCELが自動的に表の範囲を捕まえてくれます。賢いですね~、
実行結果は次です。
ひらちんの部屋だけで絞り込まれましたね(^o^)
今度は”ひらちんの部屋”と”信長の野望”の2つで絞り込んでみましょう。
Sub sample()
ActiveSheet.Range("A1").AutoFilter 1, "ひらちんの部屋", xlOr, "信長の野望"
End Sub
先程のコードの続きに、OperatorでxlOr、これは、”あるいは”と言う意味です。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^)
コメント