Office
 Computer >> コンピューター >  >> ソフトウェア >> Office

Excel VBAで詳細フィルターの条件を使う方法|実例6選

Microsoft Excelでは、大量のデータから特定のデータを取り出したいときにフィルター機能をよく使います。その中でも詳細フィルター(高度なフィルター)は、通常のフィルターよりも柔軟な抽出ができる便利な機能です。実はExcel VBAでもこの詳細フィルターを利用でき、マクロで自動化することも可能です。本記事では、Excel VBAで詳細フィルターの条件を使う方法を、6つの具体例とともに分かりやすく解説します。

Excel VBAで詳細フィルターを使う6つの実例

ここでは、Excel VBAによる詳細フィルターの使い方を6つの例に分けて紹介します。

以下のサンプルデータを使用します。

Excel VBAで詳細フィルターの条件を使う方法|実例6選

例1:現在の場所にデータを抽出するVBAマクロ

VBAマクロを使って、条件に合うデータを元の場所にそのまま表示する方法です。

Excel VBAで詳細フィルターの条件を使う方法|実例6選

範囲B16:E17に抽出条件を設定します。

ステップ1:

  • まず開発タブを開きます。
  • リボンのマクロの記録をクリックします。
  • 新しいダイアログボックスが表示されるので、マクロ名を入力してOKを押します。

Excel VBAで詳細フィルターの条件を使う方法|実例6選

ステップ2:

  • リボンのマクロをクリックします。
  • 対象のマクロを選択し、ステップインを実行します。

Excel VBAで詳細フィルターの条件を使う方法|実例6選

ステップ3:

  • 以下のVBAコードをコピーして、コードモジュールに貼り付けます。
Sub Filter_Criteria()
Dim data As Range
Dim criteria As Range
Set data = Range("B4:E14")
Set criteria = Range("B16:E17")
data.AdvancedFilter xlFilterInPlace, criteria
End Sub

Excel VBAで詳細フィルターの条件を使う方法|実例6選

ステップ4:

  • F5キーを押してコードを実行します。

Excel VBAで詳細フィルターの条件を使う方法|実例6選

ここでは「Chicago」店舗の売上だけを表示する条件を設定しました。結果は上の画像の通りです。これは、データと条件が同じシート上にある場合の処理方法です。

関連記事: Excelで詳細フィルターを使って別の場所にコピーする方法

例2:データと条件が別々のシートにある場合の詳細フィルター

次に、抽出条件とデータが別のシートにある場合の対処法を紹介します。

Excel VBAで詳細フィルターの条件を使う方法|実例6選

データは「Criteria_Different_Sheet」というシートにあり、条件は「Criteria」シートに入力されています。

ステップ1:

  • Alt+F11を押してVBE(コードモジュール)を開きます。
  • 以下のコードをモジュールに貼り付けます。
Sub Filter_Criteria_2()
 Dim data As Range
 Dim criteria As Range
   Set data = Sheets("Criteria_Different_Sheet").Range("B4:E14")
   Set criteria = Sheets("Criteria").Range("B4:E5")
   data.AdvancedFilter xlFilterInPlace, criteria
End Sub

Excel VBAで詳細フィルターの条件を使う方法|実例6選

ステップ2:

  • F5キーでコードを実行します。

Excel VBAで詳細フィルターの条件を使う方法|実例6選

このように、条件が別シートにある場合でも問題なくデータを抽出できます。

関連記事: Excelで1つの列に複数条件を指定した詳細フィルターの適用方法

例3:同じシート内の別の場所に抽出結果を貼り付ける

抽出したデータを別の場所に貼り付けたい場合は、以下の手順に従ってください。

ステップ1:

  • Alt+F11を押してコードモジュールを開きます。
  • 以下のコードを記述します。
Sub Filter_Criteria_3()
 Dim data As Range
 Dim criteria As Range
Set data = Range("B4:E14")
Set criteria = Range("B16:E17")
data.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=criteria, CopyToRange:=Range("G4:J14")
End Sub

Excel VBAで詳細フィルターの条件を使う方法|実例6選

ステップ2:

  • F5キーを押すとコードが実行されます。

Excel VBAで詳細フィルターの条件を使う方法|実例6選

抽出されたデータが別の場所に貼り付けられました。CopyToRange引数で貼り付け先の範囲を指定しています。

関連コンテンツ: Excelの詳細フィルターで別シートにデータをコピーする方法

あわせて読みたい:

  • Excel VBA:範囲内の複数条件で詳細フィルターを使う(5つの方法)
  • Excelの詳細フィルターで空白セルを除外する方法(3つの簡単なテクニック)
  • Excelの詳細フィルター徹底解説[複数列・複数条件、数式の使用、ワイルドカード]

例4:Excel VBAでユニークなデータのみを抽出する

詳細フィルターを使えば、重複を除いた一意のデータだけを取得できます。この方法では、データセット内の1回目の出現のみが残り、2回目以降の出現は削除されます。

ステップ1:

  • Alt+F11を押してコードモジュールを開きます。
  • 以下のコードを貼り付けます。
Sub Filter_Criteria_4()
 Dim data As Range
 Dim criteria As Range
Set data = Range("B4:E14")
Set criteria = Range("B16:E17")
data.AdvancedFilter xlFilterInPlace, criteria, , True
End Sub

Excel VBAで詳細フィルターの条件を使う方法|実例6選

ステップ2:

  • F5キーでコードを実行します。

Excel VBAで詳細フィルターの条件を使う方法|実例6選

ここでは、1回目の出現を緑色、2回目の出現を黄色でマークしています。コードを実行すると、黄色のセル(重複データ)が削除されました。

関連記事: Excelで詳細フィルターを使ってユニークなレコードのみを抽出する方法

例5:条件を設定せずに重複データを削除する

条件を設定しなくても、重複データを削除することができます。手順は以下の通りです。

ステップ1:

  • Alt+F11を押してVBAのコードモジュールを開きます。
  • 以下のコードをコピーして貼り付けます。
Sub Filter_Criteria_5()
 Dim data As Range
 Dim criteria As Range
Set data = Range("B4:E14")
data.AdvancedFilter xlFilterInPlace, , , True
End Sub

Excel VBAで詳細フィルターの条件を使う方法|実例6選

ステップ2:

  • F5キーを押すとコードが実行されます。

Excel VBAで詳細フィルターの条件を使う方法|実例6選

データセットを見てください。重複している部分にマークを付けています。コード適用後は、1回目の出現だけが残り、それ以外は削除されます。

関連記事: Excelの詳細フィルターが動作しないときの原因と対策(2つの理由と解決策)

例6:条件に演算子を使ってデータを抽出する

条件に比較演算子を使えば、数値の大小などでデータを柔軟に絞り込めます。以下の手順をご覧ください。

ステップ1:

  • Alt+F11を押してコードモジュールを開きます。
  • 以下のコードをモジュールに貼り付けます。
Sub Filter_Criteria_7()
 Dim data As Range
 Dim criteria As Range
Set data = Range("B4:E14")
Set criteria = Range("B16:E17")
data.AdvancedFilter xlFilterCopy, criteria, Range("G4:J14")
End Sub

Excel VBAで詳細フィルターの条件を使う方法|実例6選

ステップ2:

  • F5キーでコードを実行します。

Excel VBAで詳細フィルターの条件を使う方法|実例6選

結果として、「$1.00より大きい」値だけが抽出されました。

関連記事: VBAで詳細フィルターを使う方法(ステップバイステップガイド)

注意点

  • データの各列には、必ず一意の見出し(重複しない列名)を付けてください。
  • データセット内に空白行を入れてはいけません。

まとめ

本記事では、Excel VBAで詳細フィルターの条件を使う6つの実例を紹介しました。同一シートでの抽出から、別シートの条件指定、重複データの削除、演算子を使った絞り込みまで、さまざまな場面に応用できます。日々の業務の自動化にお役立てください。当サイトExceldemy.comもぜひご覧いただき、コメント欄でご意見をお聞かせください。

関連記事

  • Excelで複数条件を使った詳細フィルター(15の実例)
  • 動的な詳細フィルター(VBA・マクロ)
  • Excelの詳細フィルターで条件範囲を指定する方法(18の活用例)
  • 条件範囲に文字列が含まれる場合の詳細フィルターの使い方
  • Excelの詳細フィルターで「含まない」を指定する2つの方法

  1. Excel VBAでデータ入力フォームを作成する方法【初心者向け3ステップ完全ガイド】

    ExcelでVBAを活用していると、多くの方がデータ入力フォームの作成でつまずく経験をします。本記事では、VBAを使ってExcelに見栄えが良く使いやすいデータ入力フォームを作成する方法を、わかりやすく解説します。 Excel VBAでデータ入力フォームを作る3つの簡単ステップ ここでは、Washington(ワシントン)・New York(ニューヨーク)・California(カリフォルニア)という3つのワークシートを用意しました。これらには、銀行の3つの支店の顧客の氏名・連絡先・年齢・性別のデータが登録されています。 今回の目標は、VBAを使用してこのデータベースに新しいデータを入力できる

  2. ExcelでネストされたANOVA(入れ子分散分析)を実行する方法|具体例付きの詳細解説

    分散分析(Analysis of Variance、略してANOVA)は非常に有用な統計分析手法です。1918年にその手法が開発されて以来、幅広い分野で活用されてきました。ANOVAは平均値と各グループ間の統計的な差異を示し、それぞれの値がどの程度関連しているかを判定します。ネストされたANOVA(入れ子分散分析)とは、これらのグループがさらに複数のサブグループに細分化され、個々のサブグループとの相関関係が必ずしも明確ではない場合の分析を指します。本記事では、ネストされたANOVAの概要と、Excelでこの分析を行う方法について詳しく解説します。 デモンストレーションに使用したワークブックは、