カテゴリ: Excel VBA 更新日: 2026/04/13

VBAでオートフィルターを自動操作!AutoFilterの使い方を初心者向けに完全解説

フィルターをVBAで操作する方法(AutoFilterの使い方)
フィルターをVBAで操作する方法(AutoFilterの使い方)

先生と生徒の会話形式で理解しよう

生徒

「エクセルで大量のデータから特定の項目だけを絞り込むフィルター機能、これをVBAで自動化することはできますか?」

先生

「もちろんです。VBAの AutoFilter という命令を使えば、マウスでカチカチ選択しなくても、プログラムが一瞬で必要なデータだけを表示してくれますよ。」

生徒

「それは便利ですね!でも、フィルターの条件を細かく指定するのは難しくないですか?」

先生

「基本の書き方さえ覚えれば大丈夫です。データの絞り込みから解除の方法まで、丁寧に説明しますね!」

1. AutoFilter(オートフィルター)とは?

1. AutoFilter(オートフィルター)とは?
1. AutoFilter(オートフィルター)とは?

Excel(エクセル)の「フィルター」機能は、表の中から特定の条件に合う行だけを表示し、それ以外を一時的に隠してくれる非常に便利な道具です。VBA(ブイビーエー)では、この機能を AutoFilter(オートフィルター) という名前の命令で操作します。プログラミング未経験の方でも、まずは「ふるいにかける作業を自動化するもの」と考えてみてください。

例えば、1000行ある売上データから「東京都」のデータだけを抜き出したいとき、手作業では時間がかかりますし、ミスも起こりやすいです。VBAを使えば、ボタン一つで指定したキーワードに一致するデータだけを画面に表示させることができます。この自動化ができるようになると、事務作業のスピードが劇的に向上します。

2. 基本の書き方!特定のキーワードで絞り込む

2. 基本の書き方!特定のキーワードで絞り込む
2. 基本の書き方!特定のキーワードで絞り込む

最も基本的な使い方は、ある列を対象に一つの言葉で絞り込む方法です。VBAでは、対象となる表の範囲を指定し、その後に AutoFilter と書きます。ここで重要になるのが Field(フィールド)Criteria1(クライテリア・ワン) という言葉です。

Field は「左から何番目の列か」という数字を指定します。Criteria1 は「絞り込みたい言葉」を指定します。プログラミングでは、言葉を指定するときに必ず " "(ダブルクォーテーション)で囲むルールがあります。パソコンに「この言葉を探して!」と明確に伝えるための書き方です。以下のコードは、1列目(A列)にある「リンゴ」という言葉で絞り込む例です。


Sub FilterApple()
    ' A1セルが含まれる表全体に対してフィルターをかけます
    ' Field:=1 は「1列目」、Criteria1:="リンゴ" は「リンゴを検索」という意味です
    Range("A1").AutoFilter Field:=1, Criteria1:="リンゴ"
End Sub

3. フィルターを解除してすべてのデータを表示する

3. フィルターを解除してすべてのデータを表示する
3. フィルターを解除してすべてのデータを表示する

データを絞り込んだ後は、元のすべてのデータが見える状態に戻したくなることがありますよね。これを「フィルターの解除」と呼びます。VBAでフィルターを解除する方法はいくつかありますが、最も簡単なのは、単に AutoFilter とだけ書く方法です。

この命令は「スイッチ」のような役割を持っていて、フィルターがかかっていないときに実行するとフィルターの矢印が表示され、既にかかっているときに実行するとフィルター自体が消えます。もし、矢印は残したまま「絞り込み状態だけをリセット」したい場合は、ShowAllData(ショウ・オール・データ)という別の命令を使いますが、まずは一番シンプルな解除方法を覚えましょう。


Sub ClearFilter()
    ' フィルターの状態を解除して、すべての行を表示させます
    ' もしフィルターの矢印が出ていたら、それを消す動作になります
    ActiveSheet.AutoFilterMode = False
End Sub

4. 「~を含む」という曖昧な条件で絞り込む(ワイルドカード)

4. 「~を含む」という曖昧な条件で絞り込む(ワイルドカード)
4. 「~を含む」という曖昧な条件で絞り込む(ワイルドカード)

完全に一致する言葉だけでなく、「『山』という漢字が入っている名前の人」のように、一部が一致するデータを絞り込みたいこともあります。ここで役立つのが *(アスタリスク) という記号です。これをプログラミングの世界では「ワイルドカード」と呼び、どんな文字にもなれる魔法のカードのような役割をします。

例えば、"*山*" と書けば、苗字でも名前でもどこかに「山」が入っていれば表示されます。"山*" なら「山で始まる言葉」、"*山" なら「山で終わる言葉」となります。このテクニックを使えば、データの表記が少し揺れていても、柔軟に探し出すことが可能になります。事務作業での名簿整理などには欠かせない知識です。


Sub FilterPartialMatch()
    ' 2列目(B列)に「東京」という文字が含まれるデータをすべて抽出します
    ' 前後にアスタリスクを付けるのがポイントです
    Range("A1").AutoFilter Field:=2, Criteria1:="*東京*"
End Sub

5. 二つの条件を組み合わせる(ANDとOR)

5. 二つの条件を組み合わせる(ANDとOR)
5. 二つの条件を組み合わせる(ANDとOR)

「100円以上の商品」かつ「売り切れでないもの」といった、二つの条件を組み合わせて絞り込みたい場合もあります。ここで登場するのが Operator(オペレーター) という言葉です。これを使って、条件を「かつ(AND)」で繋ぐか「または(OR)」で繋ぐかを決めます。

二つ目の条件は Criteria2(クライテリア・ツー) に書きます。例えば、xlAnd を使えば両方の条件を満たすものだけが残り、xlOr を使えばどちらか一方でも満たせば表示されます。複雑な条件になればなるほど、手動で行うのは大変ですが、VBAなら一瞬です。条件分岐の考え方を応用して、必要な情報をピンポイントで抜き出しましょう。


Sub FilterMultipleConditions()
    ' 3列目(C列)が「100以上」かつ「500以下」の数字で絞り込みます
    ' Operatorに xlAnd を指定することで、範囲を指定できます
    Range("A1").AutoFilter Field:=3, _
        Criteria1:=">=100", _
        Operator:=xlAnd, _
        Criteria2:="<=500"
End Sub

6. 数字の大きさを比較して絞り込む方法

6. 数字の大きさを比較して絞り込む方法
6. 数字の大きさを比較して絞り込む方法

文字だけでなく、数値の大小でフィルターをかける方法も重要です。エクセルでは >=(以上)や <=(以下)、>(より大きい)、<(より小さい)といった記号を使います。これらを 比較演算子(ひかくえんざんし) と呼びます。

例えば、「売上目標の50,000円を超えた行だけ見たい」というときは、Criteria1:=">50000" と指定します。パソコンに不慣れな方にとって、この記号の向きは迷いやすいポイントですが、「口が開いている方が大きい」と覚えると簡単ですよ。家計簿の管理や、在庫が少なくなっている商品のチェックなど、数字を扱うすべての場面でこの絞り込みが活躍します。

7. 列の番号を間違えないための注意点

7. 列の番号を間違えないための注意点
7. 列の番号を間違えないための注意点

Field で指定する数字は、シート全体の「A列から数えて何番目」ではなく、「指定した表の範囲の中で何番目」 であることに注意してください。もし、Range("B2:D100") という範囲に対してフィルターをかけるなら、B列が「1番目」になります。

これを間違えると、全然関係ない列で絞り込みが始まってしまい、データがすべて消えた(隠れた)ように見えて驚くことがあります。プログラミングは非常に正直なので、人間が「2番目の列」と言えば、それがどんな内容であっても2番目で処理を実行します。コードを書くときは、まず自分の表がどこから始まっているのかをしっかり確認するのが、成功への近道です。

8. 複数の列を同時に絞り込む応用テクニック

8. 複数の列を同時に絞り込む応用テクニック
8. 複数の列を同時に絞り込む応用テクニック

オートフィルターは、一度に一つの列しか絞り込めないわけではありません。一行のコードでは一列分ですが、命令を並べて書くことで「A列が〇〇で、かつB列が△△なもの」といった具合に、複数の列を同時にフィルタリングできます。

命令を順番に実行していくと、エクセルは前の絞り込みを維持したまま、さらに次の絞り込みを重ねてくれます。これを 複数条件のフィルタリング と呼びます。特定の担当者が扱っている、特定のエリアの、特定の期間のデータ…というように、情報の森の中から一本の木を探し出すような細かな操作も、VBAなら簡単に実現できるのです。

9. 実務で役立つ!絞り込んだデータのコピー

9. 実務で役立つ!絞り込んだデータのコピー
9. 実務で役立つ!絞り込んだデータのコピー

データを絞り込む最終的な目的は、その結果を別のシートに貼り付けたり、合計を出したりすることにあるはずです。VBAでは、フィルターがかかった状態のまま範囲をコピーすると、目に見えている行だけ をコピーしてくれます。これを 可視(かし)セル の操作と言います。

手作業だと、隠れている行までコピーされてしまわないか不安になりますが、VBAの Copy 命令はデフォルトで見えているところを優先してくれます。絞り込んで、コピーして、別のシートに貼り付ける。この一連の流れを一つの「マクロ」にまとめれば、これまで1時間かかっていた報告書作成が、わずか数秒の仕事に変わります。エクセル自動化の真髄は、こうした「探してまとめる」作業の効率化にあるのです。

カテゴリの一覧へ
新着記事
New1
Excel VBA
Excel VBA初心者が最初に覚える思考法!「Excelを操作するように書く」
New2
Excel VBA
Excel VBAで何ができる?企業で役立つ自動化シナリオ20選を初心者向けに徹底解説
New3
Office Scripts
Office Scriptsで絶対参照・相対参照を理解!Excel自動化と数式固定の基本を徹底解説
New4
Excel VBA
Excel VBA開発で覚えておくべき安全対策!マクロウイルスと信頼センター設定を初心者向けに解説
人気記事
No.1
Java&Spring記事人気No1
Excel VBA
Excel VBAで列の追加・行の削除を自動化!InsertとDeleteの使い方を初心者向けに徹底解説
No.2
Java&Spring記事人気No2
Office Scripts
Office Scriptsで外部API連携!fetchとBearer Tokenで認証付きAPIを使う方法【Excel自動化×HTTP通信入門】
No.3
Java&Spring記事人気No3
Excel VBA
Excel VBA参照設定エラー「参照が見つかりません」を完全解説!初心者でも原因と対処法がわかる
No.4
Java&Spring記事人気No4
Office Scripts
Office Scriptsで別ブックを開いてデータ取得する方法|OneDrive・SharePoint連携でExcel自動化
No.5
Java&Spring記事人気No5
Excel VBA
VBAのコメントの書き方を完全ガイド!初心者でもわかる説明文の付け方
No.6
Java&Spring記事人気No6
Excel VBA
Excel VBAでセルに数式を入力!FormulaとFormulaR1C1の違いを徹底解説
No.7
Java&Spring記事人気No7
Excel VBA
Excel VBAは今後なくなる?将来性と企業での活用状況を詳しく解説
No.8
Java&Spring記事人気No8
Office Scripts
Office Scriptsの基本!Excel自動化で使う関数とコードの書き方