Power Query で 1 行目を見出しとして認識し、特定列をリスト化する方法

目次

概要

Excel ファイル内のテーブルを Power Query へ取り込み、1 行目を列見出しとして昇格したうえで、列 ProductName の値のみをリストとして抽出する手順を解説いたします。コードは「詳細エディター」に直接貼り付けてお使いいただけます。


前提条件

項目内容
対象テーブル名ItemCatalog
抽出したい列ProductName
使用環境Excel Microsoft 365/2019/2016(Power Query 搭載版)

M コード

let
    // ブック内テーブル「ItemCatalog」を参照
    SourceTable = Excel.CurrentWorkbook(){[Name = "ItemCatalog"]}[Content],

    // 1 行目を列見出しへ昇格
    PromotedHeader = Table.PromoteHeaders(SourceTable, [PromoteAllScalars = true]),

    // 列 ProductName をリストとして取得
    ProductList = Table.Column(PromotedHeader, "ProductName")
in
    ProductList

コード解説

ステップ説明
Excel.CurrentWorkbook()現在のブックに存在するテーブルや名前付き範囲を一覧で取得します。
[Name = "ItemCatalog"]テーブル名でフィルタリングし、[Content] でデータ本体を抽出します。
Table.PromoteHeaders取り込んだ表の 1 行目を列見出しとして設定します。PromoteAllScalars = true を指定すると、すべてのセルをテキストとして処理するため型推論によるエラーを避けやすくなります。
Table.ColumnProductName だけをリスト形式で抽出します。リストは他のクエリや関数の入力値として再利用可能です。

操作手順

  1. Power Query エディターを開く
    データ タブ →「テーブル/範囲から」→ 任意のテーブルを選択 →「データの変換」をクリックします。
  2. 詳細エディターに M コードを貼り付ける
    ホームタブ →「詳細エディター」で既存コードをすべて削除し、上記 M コードを貼り付けます。
  3. 結果を確認して読み込む
    プレビューに ProductName のリストが表示されたら、「閉じて読み込む」を実行し、シートまたは接続として保存します。

応用ポイント

目的実装例
複数列を同時にリスト化Table.ToColumns(PromotedHeader) で各列を個別のリストに変換できます。
型を自動変換したいTable.TransformColumnTypes を追加し、列ごとに型を指定します。
フィルターを追加したい例: Table.SelectRows(PromotedHeader, each [Category] = "A") を挿入して行を絞り込みます。

まとめ

Power Query の Table.PromoteHeaders を利用すると、1 行目を簡単に列見出しへ昇格できます。さらに Table.Column で列をリスト化すれば、別クエリへのパラメータ渡しやデータ検証に活用しやすくなります。定型作業の自動化にぜひお役立てください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

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

目次