Power Query で「現在のブック内テーブル」を取り込み、条件で抽出する方法

Excel Power Query では、外部ファイルを参照せずに 同一ブック内のテーブル を直接読み込めます。本記事では、テーブル「SalesData」から担当者列が “Hayashi Taro” の行だけを抽出する M コード例と、設定手順を丁寧にご説明いたします。


目次

前提条件

項目内容
Excel バージョンMicrosoft 365/2019/2016
取り込み対象ブック内テーブル「SalesData
(担当者列 = Person、数値列 = Amount など)
目的Person 列が “Hayashi Taro” に一致する行のみ抽出

M コード(Power Query エディターの「詳細エディター」に記述)

let
    // テーブル「SalesData」を読み込み
    Source = Excel.CurrentWorkbook(){[Name = "SalesData"]}[Content],
    
    // ヘッダー名をそのまま使用したフィルター
    Filtered = Table.SelectRows(Source, each [Person] = "Hayashi Taro")
in
    Filtered

コード解説

ステップ説明
Excel.CurrentWorkbook()現在のブックに存在するテーブル・名前付き範囲のリストを返します。
{[Name = "SalesData"]}[Content]リストから目的のテーブル (SalesData) を選択し、その内容(行列データ)を取得します。
Table.SelectRowsPerson 列が “Hayashi Taro” に一致する行のみ抽出します。条件式は複数列へ拡張可能です。

手順

  1. ソーステーブルの準備
    • シート上のデータ範囲を選択し、挿入 → テーブル でテーブル化します。
    • テーブル名 を「SalesData」に変更します(テーブル デザイン タブの「テーブル名」欄)。
  2. Power Query エディターを起動
    • データ → テーブル/範囲から をクリックし、Power Query エディターを開きます。
    • 左ペインで自動生成されたクエリは不要な場合、削除しても問題ございません。
  3. 詳細エディターへ M コードを貼り付け
    • ホーム → 詳細エディター を選択し、先ほどのコードを入力します。
  4. 結果を確認し閉じる
    • プレビューが意図どおりであれば、閉じて読み込む をクリックします。
    • 指定条件に一致する行だけが新しいシートまたはテーブルとして挿入されます。

応用ポイント

目的実装例
複数条件でフィルターeach [Category] = "A" and [Person] <> "Hayashi Taro"
列名を後で変更・追加Table.SelectColumns で列を指定し、不要列を削除すると読み込みが高速化します。
別シートのテーブル参照Excel.CurrentWorkbook() はブック内テーブルを網羅するため、シート位置に依存しません。

まとめ

  • Excel.CurrentWorkbook() を利用すると、同一ブック内テーブルを外部ファイル扱いせずに Power Query で直接取得できます。
  • M コードを 詳細エディター に記述することで、フィルター条件を動的に変更でき、リフレッシュ操作が効率化されます。
  • 複数の担当者や製品カテゴリーでレポートを分岐させたい場合、条件式をパラメータ化すると再利用性が高まります。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

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

目次