Excel VBA で AdvancedFilter を用い、複数条件を組み合わせて抽出する方法【完全サンプルコード】

目次

概要

Excel の AdvancedFilter は、列見出しを再利用した「条件範囲(Criteria Range)」を設定することで、AND・OR 条件を柔軟に組み合わせた抽出が可能です。本記事では、VBA から インプレース抽出(表示切替のみ) を実行するサンプルコードを示し、条件範囲の作り方と注意点を丁寧に解説いたします。


前提条件

項目内容
対応 ExcelMicrosoft 365 または 2016 以降
元データワークシート「Data」に名前付き範囲 InvoiceData が設定済み
条件範囲ワークシート「Criteria」の F2:G4 (見出し込み)
マクロ配置標準モジュール

条件範囲(Criteria Range)の構成ルール

セル設定内容
F2・G2元データの列見出しをコピー(例:Region, Amount
F3= "East"
(文字列はダブルクォーテーションで囲む)
G3>10000
F4= "West"
G4>5000
  • 同一行は AND 条件 → F3 と G3 は「Region 列が East かつ Amount 列が 10,000 超」。
  • 行が異なれば OR 条件 → F4・G4 は別行のため、上記 AND 条件と OR で結合。

サンプルコード(VBA)

Sub RunAdvancedFilter()

    Dim srcRange   As Range     ' 抽出対象データ
    Dim critRange  As Range     ' 条件範囲
    
    '--- 範囲オブジェクトの設定 ---
    Set srcRange  = Worksheets("Data").Range("InvoiceData")
    Set critRange = Worksheets("Criteria").Range("F2:G4")
    
    '--- AdvancedFilter をインプレースで実行 ---
    srcRange.AdvancedFilter _
        Action:=xlFilterInPlace, _     ' 表示切替のみ
        CriteriaRange:=critRange
    
    MsgBox "指定条件でデータを抽出しました。", vbInformation

End Sub

コード解説

説明
6InvoiceData は元データ全体(見出し行を含む)に定義した名前付き範囲です。
9CriteriaRange に条件範囲 F2:G4 を指定します。見出しと条件を含めた範囲であることが必須です。
11xlFilterInPlace を指定すると、元データの並びを保持したまま可視行が切り替わります。

応用ポイント

  1. 抽出結果を別シートへ転記 vbaコピーする編集するsrcRange.AdvancedFilter _ Action:=xlFilterCopy, _ CriteriaRange:=critRange, _ CopyToRange:=Worksheets("Result").Range("A1") xlFilterCopy を使用し、CopyToRange に転記先セルを指定します。
  2. 条件範囲を動的に拡張
    条件が増減する場合は、最終行を変数で取得し critRange を再設定すると柔軟に対応できます。
  3. 抽出解除
    If Worksheets("Data").FilterMode Then Worksheets("Data").ShowAllData でフィルター解除が可能です。

よくある質問

質問回答
条件範囲の見出しが元データと完全一致していないとどうなりますか。一致しない列は無視されます。誤った結果を防ぐため、必ずコピー&ペーストで見出しを作成してください。
数式を条件に使えますか。はい。条件セルに数式を入力すると、結果が TRUE になる行だけが抽出されます。

まとめ

AdvancedFilter を VBA から操作すると、複雑な AND/OR 条件をノーコーディングで組み合わせられます。サンプルコードを実行し、条件範囲に応じてデータが正しく抽出されることをご確認ください。条件行を追加・削除するだけでロジックを変更できるため、定期レポートやデータ分析の効率化に大いに役立ちます。

副業から独立まで「稼げる」Webスキルを習得する(PR)

ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。

「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。

このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。

講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。

副業に特化した強み

  • 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
  • AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
  • 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。

受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。

受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。

ブログで稼ぎたいなら「メイカラ」

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次