検索

キーワード


【Excel VBA】オートフィルタの設定・絞り込み・解除の方法

  • 公開日:2021-01-12 13:24:17
  • 最終更新日:2021-02-07 21:10:25

こんにちは。IMMRです。

下記のようなデータがあり、「数学」が80点以上の人を見つけたいとします。


図 ブック(データが記載されているもの)

データイメージ


For NextステートメントやIf Thenステートメントを使用して、確認することができますがここでは

オートフィルターを設定して確認をする方法を説明します。


1.オートフィルの設定および解除


オートフィルタの設定

設定したい表のセル(一か所).AutoFilter


※表全体を指定する必要はありません。

 表の中のセルどこでも一つを記載することでオートフィルタの設定が出来ます。


図 オートフィルタの設定

オートフィルタ適用イメージ


オートフィルタを設定して絞り込む

設定したい表のセル(一か所).AutoFilter Field:=対象の番号, Criteria1:="条件"


※対象の番号はフィルターとして設定したセルの番号です。

 条件は、同じ文字列や10以上等の設定が出来ます。


図 オートフィルタの絞り込み

オートフィルタ絞り込みイメージ


オートフィルタを解除する

設定したい表のセル(一か所).AutoFilter 


※設定する時と同じで、表全体を指定する必要はありません。

 既にフィルターが設定されていて、同じ条件で処理(先ほどの絞り込みで必要な対象番号や条件の記述状態)を

 行うと削除されます。


図 オートフィルタの解除

オートフィルタ解除イメージ


2.使用例

下記、ブックを使用して、オートフィルターを設定します。

条件は、テスト点数の「数学」が80以上のものを表示します。


図 ブック(点数等が記載されているもの)

データイメージ


プログラムは下記の通りです。

Sub Test18()

    Range("A2").AutoFilter Field:=4, Criteria1:=">=80"
    MsgBox "オートフィルターを設定しました。"

    Range("A2").AutoFilter
    MsgBox "オートフィルターを解除しました。"

End Sub


※フィルター対象となる表全体の範囲は、セルのA2からE22です。

 そのため、この範囲ならどこでもいいことになります。ここではA2を選択しています。

※「数学」でフィルター設定をしたいので、Fieldは4です。

 条件は80以上にしたいので、">=80"とします。

上記条件で、フィルターを設定して、一度、「オートフィルターを設定しました」とメッセージを表示します。

メッセージ終了後にもう一度、フィルター設定をします。

ここでは、Fied等の値を設定してないのでフィルターが削除されます。

そして、最後に「オートフィルターを解除しました」とメッセージを表示します。


では、実際に実行をしてみます。

まずは、下記のように準備して、実行します。


図 プログラム実行前

プログラム実行前

オートフィルタ(数学80以上)が設定されて、

「オートフィルタを設定しました」とメッセージが表示されました。


プログラム実行後(オートフィルタの設定)

プログラム実行後(オートフィルタ設定)

「OK」を押す

オートフィルタが解除され、

「オートフィルタを解除しました」とメッセージが表示されました。


図 実行後(オートフィルタの解除)




【著者】

Imamura

今まではExcel VBAの開発をしてきました。
開発を主にしたものや他の業務の効率化を目指して行ったものさまざまです。
現在は、他のプログラミング言語に挑戦して、スキルアップを目指しています。

よく読まれている記事