PR

Excelデータベースからデータ抽出|条件に合う複数項目をリスト/表出力

Thumbnail for Excelデータベースからデータ抽出|条件に合う複数項目をリスト/表出力
  • 「Power Queryで条件に合うデータだけを抽出する方法が知りたい」
  • 「大量のデータから、特定の条件に合う行だけをリストや表として取り出したい」
  • 「データベースから自動でデータを抽出して、別の表を作りたい」

Power Query(パワークエリ) を使えば、 Excel(エクセル)のデータベースから 条件に合う複数行を抽出 し、テーブル(表)やリストとして出力できます。

本記事では、データベースからデータを抽出する方法の比較・使い分けと、Power Queryを使った具体的な手順を解説します。

※ 本記事では「データベース=テーブル」として扱います(データベースが1つのテーブルのみで構成されていると仮定)

使い分け|Excelデータベースから抽出する方法比較

Excelのデータベースからデータを抽出する方法は複数あります。目的に応じた使い分けの目安は以下の通りです。

各手法の特徴を表で比較します。

抽出手法複数の該当項目への対応特徴
Power Query✅すべての該当項目を抽出✅外部データを安定取得
✅出力範囲が自動拡張
✅大容量データに強い
❌設定手順が多い
❌データ更新の操作が必要
フィルター機能/スライサー機能✅マウス操作のみで実行可
❌データ更新時の自動評価なし
XLOOKUP / VLOOKUP / INDEX+MATCH などの関数❌最初の1件のみ抽出✅旧版Excelで使用可(XLOOKUP以外)
FILTER関数✅すべての該当項目を抽出(スピル)❌古いExcelでは非対応
❌テーブル内でスピルできない
DGET関数❌複数該当時はエラー✅複数条件の設定可
❌条件設定の表構造が固定

該当項目が複数のときのFILTER関数とPower Queryの違い

Power Queryの場合:
出力は 「サイズが自動調整されるテーブル」 になります。テーブルのサイズ調整により、出力先に記入済みのセルがある場合は、そのセルを押し出す挙動をします。

FILTER関数の場合:
テーブル内での使用は困難 です。複数の該当行がある場合は #SPILL! エラーが発生します。
テーブル外使用の場合でも、出力範囲が 自動拡張されず記入済みのセルにぶつかった場合も #SPILL! エラーが発生します。

吉峰
吉峰

FILTER関数はテーブル内での使用は困難なため、出力範囲に対して 条件付き書式や入力規則を自動適用することもできません

手順|Power Queryで抽出して別の表を作る

ここからは、Power Queryを使ってデータベースから条件に合うデータを抽出 し、別の表として出力する手順を説明します。

STEP1

データベースと条件記入欄の準備

データベース(T_売上データと条件記入欄(T_検索条件の2つのテーブルを準備します。両方の表は Excel の 「テーブル」に変換しておきます (ショートカット: Ctrl + Tテーブル名は [テーブルデザイン] タブから設定可能です。

【データベースの例】

テーブル名T_売上データ

日付店舗名商品名売上
2026/05/01東京パソコン120,000
2026/05/02大阪スマホ80,000
東京タブレット50,000
2026/05/03福岡パソコン120,000
東京スマホ80,000

【条件記入欄の例】

テーブル名T_検索条件

店舗名
東京
吉峰
吉峰

テーブル化は必須ではありませんが、シート内レイアウトの変更に強くなるため推奨です。

STEP2

データベースの読み込み

データベースを Power Queryに読み込みます。

  1. [データ] タブの [テーブルまたは範囲から] ボタンをクリックします。

    テーブルまたは範囲から
  2. [ファイル] タブの [閉じて次に読み込む] を選択します。

    閉じて次に読み込む
  3. 読み込み先で [接続の作成のみ] を選択します。

    接続の作成のみ

外部ファイルからデータを取得する場合

外部ファイルのデータベースから読み込む場合は、[データ] タブの [データの取得] から、テキストやCSVファイルなどの形式を指定して読み込みます。

STEP3

条件記入欄の読み込み

条件記入欄も Power Queryに読み込みます。条件記入欄を選択して [データ] タブの [テーブルまたは範囲から] を押します。

テーブルまたは範囲から
STEP4

テーブルのマージ(条件に合うデータの抽出)

読み込んだ2つのクエリをマージし、条件に合うデータだけを抽出します。左外部結合を選択することで、条件記入欄に一致する行だけがデータベースから残ります。

  1. [ホーム] タブの [クエリのマージ] を選択します。

    クエリのマージ
  2. ダイアログ中で、データベースのテーブルを選択し、共通する見出しをクリックします。(結合の種類: [左外部(最初の行すべて、および2番目の行のうち一…)]

    クエリのマージダイアログ設定
  3. Table 表示の見出し横のボタンをクリックし、重複する項目を除外、[元の列名をプレフィックスとして使用します] のチェックを外して OK をクリックします。

    列の展開
STEP5

不要列の削除 / リスト化

不要となる列を削除します。不要な列(または残す列)の見出しをクリックし、[ホーム] タブ [列の削除](または [他の列の削除]を選択します。

列の削除
STEP6

結果を新しい表として出力

加工済みのデータを Excel のシート上にテーブルとして出力します。

  1. [ファイル] タブの [閉じて次に読み込む] を選択します。

    閉じて次に読み込む
  2. データの表示形式で [テーブル] を選択します。

  3. 出力先のシートとセル位置を指定します。

    閉じて次に読み込むダイアログ

見出しの非表示も可

出力テーブルの見出しが不要なら、[テーブルデザイン] タブの [見出し行] のチェックを外すことで、非表示にすることもできます。

データ更新|検索条件・データベース変更時のデータ更新操作

Power Queryで作成したテーブルは、 リアルタイムでは更新されません検索条件やデータベースの内容を変更した場合は、手動で更新操作を行う必要があります。

[データ] タブの [すべて更新] ボタンをクリックすると更新できます。

すべて更新

自動更新する設定

毎回手動で更新するのが手間な場合は、ブック起動時 の自動更新 や、 一定間隔 での自動更新を設定できます。

  1. クエリのプロパティ画面をメニューから 開く
  2. 「ファイルを開くときにデータを更新する」にチェックを入れる

この設定により、ブックを開くだけで最新の抽出結果が一定の時間間隔で自動反映されるようになります。

クエリのプロパティ

その他の手法|関数やフィルター機能を使った方法

Power Query以外にも、 Excelにはデータベースからデータを抽出する手段があります。ここでは、それぞれの数式の書き方を紹介します。

 

フィルター機能 / スライサー機能

フィルター (オートフィルター)機能 は、テーブル化していれば標準で使用できます。フィルターボタンが表示されていない場合は、[データ] タブの [フィルター] からフィルターボタン(が表示されます。

スライサー機能 を使う場合は、[テーブルデザイン] タブからスライサーを挿入します。スライサーの使用にはテーブル化が必須です。

 

XLOOKUP / VLOOKUP / INDEX+MATCH関数

XLOOKUP / VLOOKUP / INDEX+MATCH 関数は、特定の列の値を検索し、該当行から別の列の値を取得する関数です。いずれの関数も、取得値は最初にヒットした1件のみで、 複数行の抽出には対応していません

VLOOKUP関数は検索列が固定

VLOOKUP関数は、検索列が「指定範囲の一番左の列」に固定されています。
検索列を自由に指定したい場合は、XLOOKUP / INDEX+MATCH関数の使用が必須です 。

XLOOKUP

=XLOOKUP(検索値, 検索範囲, 戻り範囲, [見つからない場合], [一致モード], [検索モード])
excel

数式例:=XLOOKUP("東京", T_売上データ[店舗名], T_売上データ[商品名], "")

XLOOKUP

VLOOKUP

=VLOOKUP(検索値, 範囲, 列番号, [検索方法])
excel

数式例:=VLOOKUP("東京", T_売上データ[[店舗名]:[売上]], 2, FALSE)

VLOOKUP

INDEX+MATCH

=INDEX(戻り範囲, MATCH(検索値, 検索範囲, [照合型]))
excel

数式例:=INDEX(T_売上データ[商品名], MATCH("東京", T_売上データ[店舗名], 0))

INDEX+MATCH
 

FILTER関数

FILTER関数 は、指定した範囲から条件に合う項目をすべて返す関数です。条件が複数の項目に該当した場合は、数式を入力したセルから下方向へ結果が 自動展開(スピル) します。

=FILTER(配列, 条件, [空の場合])
excel

数式例:=FILTER(T_売上データ[商品名], T_売上データ[店舗名]="東京", "")

FILTER
 

DGET関数

DGET関数 は、条件を満たす1つの行の値を抽出する関数です。該当行が 複数ある場合は エラー になります。

条件範囲には、列見出しとその下に条件値を指定します。同一行に複数の条件を書くとAND条件、複数行に書くとOR条件になります。

DGETの条件範囲
吉峰
吉峰

DGET関数のようなデータベース(D関数は、引数 条件範囲 に指定する形式が独特で、癖があります。

=DGET(データベース, フィールド, 条件範囲)
excel

数式例:=DGET(T_売上データ[#すべて], "商品名", T_検索条件[[#すべて],[店舗名]])

DGET

まとめ|目的に合わせて最適なデータ抽出手法を選ぼう

本記事の要点は以下の3点です。

  • 使い分け :その場で絞り込むなら「フィルター機能」値を即時に引くなら「関数」 大容量データの処理や別表の作成なら「Power Query」 を使う
  • Power Queryでのデータ抽出手順 :条件記入欄とデータベースをPower Query上でマージし、 条件に合う行だけを抽出してテーブルとして出力 する
  • Power Queryのメリット該当項目が複数ある 場合でも、データベースが外部ファイルにある場合でも、安定して動作する

Excelで、より本格的なデータベース(疑似リレーショナルデータベース)を構築する方法については、以下の記事で解説しています。