仕事で日報や経費の計算、作業員名簿などなにかとオートフィルタを使う機会が多いかたは
フィルタでチェックを入れ替える
フィルタの(すべて選択)を選ぶ
フィルタであいまい検索をする
など、同じ作業を繰り返すことがたくさんあるのではないでしょうか?
この記事では、何度も使うオートフィルタの機能をVBA(マクロ)で自動化して、作業の負担を減らす方法をご紹介しています。
EXCELのオートフィルタで使える便利なマクロ
ここで紹介するマクロをボタンに設定するとワンタッチで利用することができます。
オートフィルタの選択部分を解除する
まずはフィルターで選んだ項目を全て外し、表が全部見えている状態に戻すマクロです。
Sub Macro_filterclear()
Range("A1").Select
If ActiveSheet.FilterMode Then
ActiveSheet.ShowAllData
End If
End Sub
マクロの内容説明
Sub Macro_filterclear()
→マクロの名前です。
塗りつぶし部分は変更してもかまいません。
Range(“A1“).Select
→オートフィルタを設定している表の一番左上のセルを指定します。
今回はA1でした。
If ActiveSheet.FilterMode Then
ActiveSheet.ShowAllData
→フィルタの選択部分を解除するコードなのでこのまま
End If
End Sub
→このまま
オートフィルタの条件を指定したセルの値から選択する
Sub macro_filterSell()
Selection.AutoFilter Field:=3, Criteria1:=Range("D1").Value
End Sub
マクロの内容説明
Sub macro_filterSell()
→マクロの名前です。
塗りつぶし部分は変更してもかまいません。
Selection.AutoFilter Field:=3,
→Field:=3 の3の部分が、オートフィルタの表の中で条件を指定したい列の番号です。
たとえば
・A1:C3の表でBの列の条件を指定したい場合は2
・C1:D5の表でCの列の条件をしていしたい場合は1
と記載します。
Criteria1:=Range(“D1”).Value,
→条件を記入するセルを指定します。
D1の部分を変えてください
End Sub
→このまま
オートフィルタの条件を指定するマクロ
Sub macro_filterCon()
Selection.AutoFilter Field:=3, Criteria1:="1"
End Sub
マクロの内容説明
Sub macro_filteCon()
→マクロの名前です。
塗りつぶし部分は変更してもかまいません。
Selection.AutoFilter Field:=3,
→Field:=3 の3の部分が、オートフィルタの表の中で条件を指定したい列の番号です。
たとえば
・A1:C3の表でBの列の条件を指定したい場合は2
・C1:D5の表でCの列の条件をしていしたい場合は1
と記載します。
Criteria1:=“1”
→条件を記入します。
この場合はフィルタで「1」のときを抽出することになります。
End Sub
→このまま
オートフィルタで二つの条件を指定するマクロ
Sub macro_filter2con()
Selection.AutoFilter Field:=3, Criteria1:="<10", Operator:=xlAnd, Criteria2:=">=5"
End Sub
マクロの内容説明
Sub macro_filter2con()
→マクロの名前です。
塗りつぶし部分は変更してもかまいません。
Selection.AutoFilter Field:=3,
→Field:=3 の3の部分が、オートフィルタの表の中で条件を指定したい列の番号です。
たとえば
・A1:C3の表でBの列の条件を指定したい場合は2
・C1:D5の表でCの列の条件をしていしたい場合は1
と記載します。
Criteria1:=”<10“,
→ひとつめの条件を記入します。
この場合はフィルタで「10より下」の抽出することになります。
Operator:=xlAnd,
→2つの条件を「And」にするか「Or」にするかを指定します。
xlAnd:「And」Criteria1かつCriteria2
xlOr:「Or」Criteria1もしくはCriteria2
Criteria2:=”>=5“
→ふたつめの条件を記入します。
この場合はフィルタで「10以上」の抽出することになります。
End Sub
→このまま