3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Power Query】セルの値を使って動的にデータを抽出する方法

3
Last updated at Posted at 2025-05-23

Power Queryでセルの値を使って動的にデータを抽出する方法

🧭 1. はじめに

Excel の Power Query は、データの整形や変換を効率的に行える強力なツールです。特に、ユーザーが入力した条件に応じて動的にデータを抽出する機能は、レポートやダッシュボードの自動化に非常に役立ちます。

本記事では、別セルに入力された値を元に、Power Query でデータをフィルタする方法を、サンプルデータと共にわかりやすく解説します。


💡 2. シナリオ例

たとえば、以下のような売上データがあるとします:

  • 担当者ごとの売上を管理している
  • ユーザーがセルに担当者名を入力すると、その担当者の売上データだけを抽出したい

このようなケースで、Power Query を使えば、関数やマクロを使わずに動的な抽出が可能です。


🛠️ 3. 手順

📋 3.1 データの準備

まずは、以下のような売上データを Excel に用意します。テーブル名は SalesData とします。

image.png

🔹 サンプルデータ

Date Salesperson Region Product SalesAmount
2023-01-01 Alice North Product A 1000
2023-01-02 Bob South Product B 1500
2023-01-03 Charlie East Product C 2000
2023-01-04 David West Product D 2500
2023-01-05 Eva North Product E 3000
2023-01-06 Frank South Product F 3500
2023-01-07 Grace East Product G 4000
2023-01-08 Hannah West Product H 4500
2023-01-09 Ian North Product I 5000
2023-01-10 Jack South Product J 5500

🧾 3.2 抽出条件セルの準備

抽出条件 (担当者名) を入力するセルは、Power Query で扱いやすいように 1 行 1 列のテーブルとして設定します。

✅ 担当者名フィルター用テーブル(FilterSalesperson)

image.png

Salesperson
Alice

このように列名を明示しておくことで、Power Query 側での参照がわかりやすくなります。


🔄 3.3 Power Query でテーブルを読み込む

Power Query で複数のテーブルを使うには、それぞれのテーブルを個別に読み込み、クエリとして保存しておく必要があります

✅ 手順:

  1. Excel の [データ] タブ → [テーブルまたは範囲から] から、売上データのテーブル(例:SalesData)を Power Query に読み込みます。
  2. Power Query エディタで内容を確認し、[ホーム] タブ → [閉じて読み込む] をクリックしてクエリを保存します。
  3. 次に、抽出条件を入力したテーブル(例:FilterSalespersonFilterDateRange)についても、同様に [データ] タブ → [テーブルまたは範囲から] で読み込みます。
  4. Power Query エディタが開いたら、[ホーム] タブ → [閉じて次に読み込む] をクリックします。
  5. 表示される [データのインポート] ダイアログで、[接続の作成のみ] を選択し、[OK] をクリックしてクエリを保存します。
    image.png
  6. すべてのテーブルが読み込まれた状態で、[データ] タブ → [データの取得] で [Power Query エディタの起動] でエディタを開き、必要な処理を行います。

🧮 3.4 M 言語でのフィルタ処理 (担当者名)

Power Query で読み込んだ SalesData クエリに対して、FilterSalesperson の値を使ってフィルタ処理を行います。

✅ 手順:

  1. [データ] タブ → [データの取得] → [クエリの編集] をクリックして、Power Query エディタを開きます。
  2. 左側のクエリ一覧から SalesData を選択します。
  3. [ホーム] タブ → [詳細エディター] をクリックします。
  4. 表示された M 言語のコードをそれぞれ以下のように編集します。
FilterSalesperson
let
    Source = Excel.CurrentWorkbook(){[Name="FilterSalesperson"]}[Content]{0}
in
    Source
SalesData
let
    Source = Excel.CurrentWorkbook(){[Name="SalesData"]}[Content],
    FilteredRows = Table.SelectRows(Source, each [Salesperson] = @FilterSalesperson[Salesperson])
in
    FilteredRows

🚀 4. 応用:複数条件でのフィルタ (日付範囲)

日付の範囲でフィルタを行いたい場合は、開始日と終了日を1つのテーブルにまとめて管理することができます。

✅ 日付範囲フィルター用テーブル(FilterDateRange)

image.png

FilterStartDate FilterEndDate
2023-01-01 2023-01-10

🧮 M 言語でのフィルタ処理 (複数条件)

FilterDateRange
let
    Source = Excel.CurrentWorkbook(){[Name="FilterDateRange"]}[Content]{0}
in
    Source
SalesData
let
    Source = Excel.CurrentWorkbook(){[Name="SalesData"]}[Content],
    FilteredRows = Table.SelectRows(Source, each 
        [Date] >= @FilterDateRange[FilterStartDate]
        and [Date] <= @FilterDateRange[FilterEndDate]
    )
in
    FilteredRows

⚠️ 5. 注意点とベストプラクティス

  • テーブルは列名を明示し、1 行のみにしてください。
  • データ型 (文字列、日付など) が一致しているか確認しましょう。
  • Power Query のキャッシュが古い場合は、更新ボタンで再読み込みを行ってください。

✅ 6. まとめ

Power Query を使えば、ユーザーが入力した条件に応じて、データを動的に抽出することができます。これにより、柔軟で再利用可能なレポートやダッシュボードを構築することが可能になります。

📚参考サイト

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?