検索

キーワード


目次

【Excel VBA】オートフィルターの条件(複数)設定の方法

  • 公開日:2023-06-05 19:51:08
  • 最終更新日:2023-06-03 20:02:18

Workteria(ワークテリア)では難易度の高いものから低いものまで、スキルや経験に合わせた案件を多数揃えています。会員登録は無料ですので、ぜひ会員登録してご希望の案件を探してみてください!

フリーランス/正社員のエンジニアとして活躍するには、ご自身のスキルや経験に合わせた仕事を選ぶことが大切です。ご希望の案件がみつからない場合はお気軽にお問い合わせください!ユーザ満足度の高いキャリアコンサルタントが在籍していますので、希望条件や悩み事などなんでもご相談ください。ご希望にピッタリの案件をご紹介させていただきます。

こんにちは。IMMRです。ここでは、オートフィルターの複数条件の設定について説明をします。

「オートフィルター」に関しては、以前にも説明しています。 ※ただし、ここで説明しているのは、条件が1つの場合です。

オートフィルターの設定・絞り込み・解除

また、これから説明するのは上記のリンク先(オートフィルターの設定・絞り込み・削除)とは、異なる記載方法です。


1.オートフィルターの設定方

オートフィルターの複数条件の設定について説明をしていきます。

記載方法は、下記2つがありますので、双方を説明します。

条件を直接記載して、オートフィルターの設定(直接記載)

条件を配列に格納して、配列よりオートフィルターの設定(配列記載)


まずは、(直接記載)です。


オートフィルターの設定(直接記載)

直接記載の設定は下記のように何列目のセルが、どんな条件なのかを記載していきます。


オートフィルターの宣言および条件

セル.AutoFilter,Field,Criteria1,Operator,Criteria2


詳細は以下の通りです。

Field:列の位置

Criteria1:1つ目の条件

Operator:ANDやOR等の方法

Criteria2:2つ目の条件


この記載によって、条件によるオートフィルターをかけることが出来ますが

オートフィルターの設定では、条件を3つ、4つ必要ということもでてくると思います。

条件を追加したい場合は

AutoFilter,Field,Criteria1,Operator,Criteria2,Operator,Criteria3,・・・

と追加して記載するのではなく、下記のように配列を使用して記載していきます。


オートフィルターの設定(配列記載)

ここでは配列を使用して、オートフィルターを設定していきます。

順序としては

配列を作成して、オートフィルターの設定条件を追加してから

条件を追加した配列よりオートフィルターを設定するといった感じです。


配列の宣言および条件の設定

Dim Target(3) As String

Target(0) = 条件1
Target(1) = 条件2
Target(2) = 条件3


オートフィルターの宣言および配列

セル.AutoFilter,Field,Target, xlFilterValues


Field:列の位置

Target:オートフィルターを設定する時に使用する配列名

xlFilterValues:オートフィルターを設定する時に必要


この記載方法で配列に入れた複数の条件でオートフィルターを設定することができます。

では、サンプルプログラムを見て、使用例を見ていきたいと思います。


2.使用例(サンプルプログラム)

入力データは下記の表を使用してオートフィルターの絞り込みを行っていきます。


図1 セミナー参加者表

セミナー参加者表


オートフィルターの設定(直接記載)のサンプルプログラム

図1 セミナー参加者表の

B列(左から2列目)の参加者で、”鈴木”、”佐藤” どちらかの場合でオートフィルターで絞り込みたい場合は以下のように記載します。


サンプルプログラム①

Sub test1()

    Range("A3").AutoFilter 2, "鈴木", xlOr, "佐藤"

End Sub


B列(左から2列目)なのでFieldの値は2となります

”鈴木”か”佐藤”かという判別を行うのでxlOrが使われます


オートフィルターの設定(配列記載)のサンプルプログラム

図1 セミナー参加者表の

B列(左から2列目)の参加者で、”鈴木”、”佐藤”、”伊藤” いずれかをオートフィルターで絞り込みたい場合のサンプルコードです。


サンプルプログラム②

Sub test2()

    Dim Target(3) As String

    Target(0) = "鈴木"
    Target(1) = "佐藤"
    Target(2) = "伊藤"

    Range("A3").AutoFilter 2, Target, xlFilterValues

End Sub


B列(左から2列目)なのでFieldの値は2

Targetという名の配列を作成して、

その中に条件(”鈴木”、”佐藤”、”伊藤”)部分を入れていきます。


オートフィルターの設定(直接記載)のサンプルプログラム ※おまけ

図1 セミナー参加者表の

C列(左から3列目)のテスト点数で、値が70以上 80より小さい値をオートフィルターで絞り込みたい場合のサンプルコードです。

今回は値に一致するかではなく、数値による以上未満の条件判定を行います。


サンプルプログラム③

Sub test3()

    Range("A3").AutoFilter 3, ">=70", xlAnd, "<80"

End Sub


※B列(左から3列目)なのでFieldの値は3です。

 条件式を記載する場合は、>=70ではなく>=70”””で囲んで設定します。


3.使用例(サンプルプログラムの実行)

上記にあげた3つのサンプルプログラムを実行して、いきます。


サンプルプログラム① test1(参加者で、”鈴木”、”佐藤”を絞り込み)の実行


図2 test1_実行前

図2 test1_実行前

ここでは、対象を見やすくするために、事前に参加者が「鈴木」「佐藤」の行には塗りつぶしをおこなっています。

↓実行します。


図3 test1_実行後

図3 test1_実行後


予定どおり、参加者が「鈴木」「佐藤」で絞り込みが出来ています。


サンプルプログラム② test2(参加者で、”鈴木”、”佐藤”、”伊藤” を絞り込み)の実行


図4 test2_実行前

図4 test2_実行前

ここでは、対象を見やすくするために、事前に参加者が「鈴木」「佐藤」「伊藤」の行には塗りつぶしをおこなっています。

↓実行します。

図5 test2_実行後

図5 test2_実行後


予定どおり、参加者が「鈴木」「佐藤」「伊藤」で絞り込みが出来ています。


サンプルプログラム③ test3テスト点数で、値が70以上 80より小さい値を絞り込み)の実行


図6 test_実行前

図6 test3_実行前

ここでは、対象を見やすくするために、事前に点数が70以上、80より小さいの値の行には塗りつぶしをおこなっています。

↓実行します。

図7 test_実行後

図7 test3_実行後


予定どおり、点数が70以上、80より小さいの値で絞り込みが出来ています。


以上により、3つのサンプルプログラムを実行して、正しく出力できることを確認しました。


【著者】

Imamura

「挑戦心」を忘れずに、新しいことにチャレンジしています。 資格:VBAエキスパート Excel VBA(ベーシック/スタンダード) 等

編集した記事一覧

正社員/フリーランスの方でこのようなお悩みありませんか?

  • 自分に合う案件を定期的に紹介してもらいたい
  • 週2、リモートワークなど自由な働き方をしてみたい
  • 面倒な案件探し・契約周りは任せて仕事に集中したい

そのような方はぜひ、Workteriaサイトをご利用ください!

  • 定期的にご本人に合う高額案件を紹介

  • リモートワークなど自由な働き方ができる案件多数

  • 専属エージェントが契約や請求をトータルサポート

よく読まれている記事