【Excel】選択内容に応じてデータを抽出するドロップダウンフィルターの作成方法4選
Excelのフィルター機能を使えば、条件に合わせてデータを抽出できます。しかし、標準のフィルター機能には「行番号やセル参照が固定されたまま変わらない」という課題があります。そこで便利なのが、ドロップダウンフィルターの自作です。この記事では、プルダウンリストの選択内容に基づいてデータを自動抽出できるフィルターを作成する、実用的な4つの方法をわかりやすく解説します。
説明には、ある会社の販売担当者(Salesman)・製品(Product)・純売上高(Net Sales)をまとめたサンプルデータを使用します。

ドロップダウンフィルターで選択に基づくデータ抽出を行う4つの方法
方法1:補助列を使ってドロップダウンフィルターを作成する
最初の方法では、3つの補助列を追加してドロップダウンフィルターを実現します。以下の手順に沿って進めてください。
手順:
- まず、セルD5を選択し、次の数式を入力します。
=ROWS($B$5:B5)

- Enterキーを押したら、オートフィルを使って連番を最終行までコピーします。

- 次に、ドロップダウンフィルターを設置したいセル(ここではG5)を選択します。
- リボンのデータ ➤ データツール ➤ データの入力規則の順にクリックします。

- データの入力規則ダイアログボックスが表示されます。
- 設定タブで、入力値の種類を「リスト」に変更し、元の値ボックスに「TV,AC」と入力します。

- OKを押すと、目的のドロップダウンリストが作成されます。

- 続いて、セルE5を選択して次の数式を入力します。
=IF(B5=$G$5,D5,"")
- Enterキーを押します。

- オートフィルで残りのセルにも数式をコピーします。
- 次にセルF5を選択し、以下の数式を入力します。
=IFERROR(SMALL($E$5:$E$10,D5),"")
- Enterキーを押します。

- 同様にオートフィルで残りを埋めます。
- 最後にセルI5を選択して、次の数式を入力します。
=IFERROR(INDEX($A$5:$C$10,$F5,COLUMNS($I$5:I5)),"")
- Enterキーを押します。

ここで、COLUMNS関数は範囲$I$5:I5に含まれる列数を返します。INDEX関数は、F5で指定された行番号とI5で指定された列番号が交差する位置にあるセルの値を返します。さらにIFERROR関数により、エラーが発生した場合は空白セルが表示される仕組みです。
- オートフィルで数式を一括コピーすると、選択内容に応じたデータが表示されます。

- 同じ要領で、ドロップダウンから「AC」を選択すると、データセットが自動的に更新されます。

方法2:FILTER関数でドロップダウンフィルターを作成する
この方法では、FILTER関数を活用して、選択内容に基づくデータ抽出用のドロップダウンフィルターを作成します。Microsoft 365など動的配列数式に対応した環境が必要です。以下の手順で操作しましょう。
手順:
- まず、範囲A4:C10を選択します。
- 挿入タブから「テーブル」を選択します。

- ダイアログボックスが表示されたらOKをクリックします。
- これで自動的に「Table1」という名前のテーブルが作成されます。
- 次に、新しい空のシートを開き、セルB2に以下の数式を入力します。
=UNIQUE(Table1[Product])

- Enterキーを押すと、重複のない製品名がスピル表示されます。

- 続いて、元のシートのセルE5(または任意のセル)を選択します。
- データ ➤ データツール ➤ データの入力規則を開きます。

- ダイアログボックスが表示されたら、設定タブで入力値の種類を「リスト」にし、元の値ボックスに次の数式を入力します。
=list!$B$2#

ここで「list」は新しく作成したシート名です。「#」(スピル演算子)により、listシートのB2からスピルしている範囲全体がリストの候補として参照されます。
- その後、セルG5を選択し、以下の数式を入力します。
=FILTER(Table1,Table1[Product]=E5)
- Enterキーを押すと、該当データがスピル表示されます。

FILTER関数はTable1を絞り込み、セルE5の値と一致するレコードだけを返します。
- ドロップダウンを「AC」に変更すれば、選択に応じたデータが即座に表示されます。

方法3:INDIRECT関数で複数シートから選択データを抽出する
INDIRECT関数を使えば、複数のシートから選択に応じてデータを取り出すことができます。たとえば、次の例ではSheet1とSheet2の2つのシートにデータがあり、シート名を選択すると対応するTotal Sales(合計売上)が自動的に表示される仕組みを作ります。

手順:
- まず、抽出結果を表示したいシートのセルC4を選択します。

- データ ➤ データツール ➤ データの入力規則を開きます。
- ダイアログボックスで入力値の種類を「リスト」にし、元の値ボックスに次の範囲を指定します。
=$C$8:$C$9

- OKを押します。
- 次に、セルC6を選択して以下の数式を入力します。
=INDIRECT("'"&C4&"'!C11")
- Enterキーを押すと、セルC4で指定したシートからTotal Salesの値が取得されます。

- 最後に、ドロップダウンフィルターでシートを切り替えると、セルC6の値が自動的に変化することを確認できます。

方法4:VBAマクロでドロップダウンフィルターを作成する
最後の方法では、VBAコードを使ってドロップダウンフィルターを実装します。別シートのデータをリアルタイムで絞り込みたい場合に特に有効です。以下の手順を確認しましょう。
手順:
- まず、シート「vba1」に元データが入力されている状態を用意します。

- そして、シート「vba2」にドロップダウンフィルターを配置します。vba2のドロップダウンでの選択内容に応じて、vba1のデータを絞り込むのがゴールです。

- 次に、下の画像のようにシート「vba2」のタブを右クリックし、「コードの表示」を選択します。

- コードウィンドウが開いたら、以下のコードをコピーして貼り付けます。
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Range("A2"), Target) Is Nothing Then
Application.EnableEvents = False
If Range("A2").Value = "" Then
Worksheets("vba1").ShowAllData
Else
Worksheets("vba1").Range("A2").AutoFilter 1, Range("A2").Value
End If
Application.EnableEvents = True
End If
End Sub

- F5キーを押すとマクロダイアログが表示されます。マクロ名に任意の名前を入力します。
- 作成をクリックします。

- 再度F5キーを押して「実行」を選択します。

- ウィンドウを閉じたら、ドロップダウンフィルターから「TV」を選択してみましょう。

- すると、シート「vba1」側でデータが自動的に絞り込まれます。

- 同様に、vba2のドロップダウンで「AC」を選択しても、抽出結果が正しく表示されます。

まとめ
本記事で紹介した4つの方法を活用すれば、Excelで選択内容に基づいてデータを抽出できるドロップダウンフィルターを自由に作成できるようになります。補助列を使う古典的な手法から、FILTER関数やINDIRECT関数といった最新の関数、さらにはVBAによる自動化まで、用途やExcelのバージョンに合わせて最適な方法を選んでみてください。他におすすめの方法があれば、ぜひコメント欄でお知らせください。ご質問やご意見もお待ちしています。
関連記事
- Excelでドロップダウンリスト付きフォームを作成する方法
- ドロップダウンリストの選択に応じて列を表示・非表示にする方法
- 複数単語に対応した依存型ドロップダウンリストの作り方
- 使用済み項目をドロップダウンリストから削除する方法(2通り)
- ドロップダウンリストから重複を削除する方法(4通り)
-
Excelでセルの値に基づいてドロップダウンリストを動的に変更する2つの方法
特定の値をもとにデータを抽出したい場合、ドロップダウンリストが非常に便利です。さらに、複数の連動型(依存関係のある)ドロップダウンリストを作成できれば、選択内容に応じてリストの中身が自動的に切り替わる仕組みを実現できます。本記事では、Excelでセルの値に基づいてドロップダウンリストを変更する方法を、具体的な手順とともに詳しく解説します。 セルの値に基づいてドロップダウンリストを変更する2つの方法 以下では、最も実用的な2つの方法をご紹介します。1つ目は、OFFSET関数とMATCH関数を組み合わせて、セルの値に応じてリストを動的に変更する方法です。2つ目は、Microsoft 365(Exc
-
Excelでドロップダウンリスト付きのデータ入力フォームを作成する2つの方法
Microsoft Excelでは、データ入力フォームや計算フォームなど、さまざまな種類のフォームを作成できます。こうしたフォームを活用すれば、データ入力が格段に楽になり、作業時間の大幅な節約にもつながります。また、Excelには「ドロップダウンリスト」という便利な機能もあります。限られた値を何度も手入力するのは面倒ですが、ドロップダウンリストを使えば、リストから選ぶだけで簡単に値を入力できます。この記事では、Excelでドロップダウンリスト付きのデータ入力フォームを作成する方法を、具体的な操作画面とともにわかりやすく解説します。 Excelでドロップダウンリスト付きデータ入力フォームを