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.SelectRows | Person 列が “Hayashi Taro” に一致する行のみ抽出します。条件式は複数列へ拡張可能です。 |
手順
- ソーステーブルの準備
- シート上のデータ範囲を選択し、挿入 → テーブル でテーブル化します。
- テーブル名 を「SalesData」に変更します(テーブル デザイン タブの「テーブル名」欄)。
- Power Query エディターを起動
- データ → テーブル/範囲から をクリックし、Power Query エディターを開きます。
- 左ペインで自動生成されたクエリは不要な場合、削除しても問題ございません。
- 詳細エディターへ M コードを貼り付け
- ホーム → 詳細エディター を選択し、先ほどのコードを入力します。
- 結果を確認し閉じる
- プレビューが意図どおりであれば、閉じて読み込む をクリックします。
- 指定条件に一致する行だけが新しいシートまたはテーブルとして挿入されます。
応用ポイント
目的 | 実装例 |
---|---|
複数条件でフィルター | each [Category] = "A" and [Person] <> "Hayashi Taro" |
列名を後で変更・追加 | Table.SelectColumns で列を指定し、不要列を削除すると読み込みが高速化します。 |
別シートのテーブル参照 | Excel.CurrentWorkbook() はブック内テーブルを網羅するため、シート位置に依存しません。 |
まとめ
Excel.CurrentWorkbook()
を利用すると、同一ブック内テーブルを外部ファイル扱いせずに Power Query で直接取得できます。- M コードを 詳細エディター に記述することで、フィルター条件を動的に変更でき、リフレッシュ操作が効率化されます。
- 複数の担当者や製品カテゴリーでレポートを分岐させたい場合、条件式をパラメータ化すると再利用性が高まります。