スポンサードリンク
データを指定した値でフィルタをかけたいことがあります。
オートフィルタをかける時の設定でいろいろ苦戦したので
やり方を覚書で残しておきます。
スポンサードリンク
オートフィルタのかけ方
1つのオートフィルタのかけ方
オートフィルタをかけるときは下記のように書きます。
Range(セル番地).AutoFilter Field:=フィルタをかける列, Criteria1:=フィルタをかける値
『Range』に指定する【セル番地】は表全体ではなく、表内のセルを1つだけ指定します。
オートフィルタが【A1】から始まる表ならば【Range(“A1”)】を指定します。
『Field』はフィルタをかけたい列番号を指定します。
ここでの列番号はオートフィルタをかける表での列番号です。
『Criteria1』はフィルタをかけたい値を指定します。
例えば、【B2】から始まる表で「C列」で『東京』という文字でフィルタをかける場合は
下記のように書きます。
Range("B2").AutoFilter Field:=2, Criteria1:="東京都"
ちなみに、『Range』は『Rows』でもフィルタをかけられます。
『Rows』の場合は下記のように書きます。
Rows(2).AutoFilter Field:=2, Criteria1:="東京都"
実行すると上記のように『東京』でフィルタがかけられます。
2つの項目以上のオートフィルタのかけ方
オートフィルタは基本的に1つの項目しかかけられません。
そのため、2つの項目にオートフィルタをかける場合は
『With』ステートメントを使って指定をします。
例えば、【B2】から始まる表で「C列」で『東京』、「E列」で『男』という文字でフィルタをかける場合は
下記のように書きます。
With Range("B2") .AutoFilter Field:=2, Criteria1:="東京都" .AutoFilter Field:=4, Criteria1:="男" End With
ちなみに、『With』ステートメントを使わなくても
オートフィルタを2回起動しても同じ結果ができます。
Range("B2").AutoFilter Field:=2, Criteria1:="東京都" Range("B2").AutoFilter Field:=4, Criteria1:="男"
『With』ステートメントの使い方で迷ったら
こちらでもいいかもしれません。
複数条件のオートフィルタのかけ方
同じ列にあるもので、複数の条件でオートフィルタをかける場合も
条件指定すればできます。
例えば、【B2】から始まる表で「C列」で『東京』、『神奈川』という文字でフィルタをかける場合は
下記のように書きます。
Range("B2").AutoFilter Field:=2, Criteria1:="東京都", Operator:=xlOr, Criteria2:="神奈川県"
【Operator:=xlOr】は抽出条件での指定を指示しています。
他にも、配列を使ってオートフィルタもかけられます。
Range("B2").AutoFilter Field:=2, Criteria1:=Array("東京都", "神奈川県"), Operator:=xlFilterValues
【Operator:=xlFilterValues】はフィルタの値を指定しています。
配列の場合はこれを指定しないと最後の配列の値のみでオートフィルタがかかってしまいます。
今回のケースですと、『神奈川県』のみでフィルタがかかってしまいます。
オートフィルタの解除の仕方
オートフィルタの作業が終わったら
オートフィルタを解除しておくといいです。
解除の仕方は2つあります。
1つはフィルタそのものを解除するやり方で、
下記のように書きます。
Range("B2").AutoFilter
【AutoFilter】メソッドで引数をなしで実行すればフィルタが解除されます。
もう1つは、フィルタの絞り込みを解除する方法です。
フィルタの絞り込みを解除する方法は下記のように書きます。
Activesheet.ShowAllData
これでオートフィルタの絞り込みは解除されます。
VBAでのオートフィルタの使い方のまとめ
オートフィルタの指定で、エラーが出る場合は
ワークシートオブジェクトを指定しないといけない場合があります。
その際はRangeオブジェクトの前にワークシートオブジェクトを指定してください。
以下の記事を参考にして下さい。
【参考】
(Excel VBA)RangeプロパティでCellsやRows、Columnsを組み合わせて使うと「実行時エラー 1004」が出る時の対処法
(Excel VBA)変数を使う時のCells、Rows、Columnsを使ったRangeでのセル指定方法
オートフィルタを使うと、条件で絞りこんだ内容で
ループ処理することができます。
次回はオートフィルタを使ったループ処理を書く予定です。
スポンサードリンク