目次
概要
Excel Power Query では Table.AddColumn 関数を使うことで、既存のテーブルに計算列(新しいフィールド)を簡単に追加できます。たとえば「価格 × 数量」で小計を求める場合、数式をセルに入力せずクエリ内で自動計算させることで、再読み込み時も常に最新の値を保持できます。
前提条件
項目 | 内容 |
---|---|
対応 Excel バージョン | Microsoft 365 または 2016 以降 |
サンプルテーブル名 | order_details |
追加アドイン | 不要(Power Query 標準機能のみ) |
サンプルコード(M 言語)
以下のコードを Power Query エディタの 「詳細エディター」 に貼り付けて実行してください。テーブル名や列名は例示用に変更してありますので、そのままご利用いただけます。
let
// ブック内テーブル一覧を取得
wbTables = Excel.CurrentWorkbook(),
// 対象テーブル order_details を取得
detailsTbl = wbTables{[Name = "order_details"]}[Content],
// 「Subtotal」列を追加(UnitPrice × Quantity)
withSubtotal = Table.AddColumn(
detailsTbl,
"Subtotal",
each [UnitPrice] * [Quantity],
Currency.Type // 列のデータ型を通貨型に設定
)
in
withSubtotal
コードのポイント
- テーブル取得
Excel.CurrentWorkbook()
で現在のブックに含まれるテーブルを一覧取得し、order_details
を選択しています。 - 列の追加
Table.AddColumn
関数により、新しい列名"Subtotal"
と計算式each [UnitPrice] * [Quantity]
を指定しています。 - データ型の明示
第 4 引数にCurrency.Type
を渡すことで、追加列のデータ型を通貨型に設定し、後続の集計処理を安定化させています。
活用例
目的 | 方法 |
---|---|
税込金額の自動計算 | each [Subtotal] * 1.1 のように消費税率を掛け合わせて新列を追加 |
日付列のフォーマット変換 | each Date.ToText([OrderDate], "yyyy-MM-dd") を用いて文字列列を追加 |
条件付きフラグ列の作成 | each if [Quantity] > 100 then "Large" else "Small" で閾値分類 |
よくある質問
質問 | 回答 |
---|---|
別シートに書き戻す必要はありますか。 | Power Query で「テーブルとして読み込む」を選択すれば、自動的にシートへ出力されます。再読み込み時も計算列は更新されます。 |
追加した列を後から削除したい場合はどうすればよいですか。 | 手順ペインで「追加されたカスタム列」のステップを右クリックし、「削除」を選択すると削除できます。 |
まとめ
Power Query による計算列の追加は、数式をシートに残さずクエリ側で一元管理できるため、データ更新時のトラブルを最小限に抑えられます。まずは今回のサンプルコードを実行して仕組みを確認し、ご自身のテーブル構造やビジネスロジックに合わせて式やデータ型を調整してみてください。