Power Query で計算列を追加する方法【初心者にもわかりやすいサンプル】

目次

概要

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

コードのポイント

  1. テーブル取得
    Excel.CurrentWorkbook() で現在のブックに含まれるテーブルを一覧取得し、order_details を選択しています。
  2. 列の追加
    Table.AddColumn 関数により、新しい列名 "Subtotal" と計算式 each [UnitPrice] * [Quantity] を指定しています。
  3. データ型の明示
    第 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 による計算列の追加は、数式をシートに残さずクエリ側で一元管理できるため、データ更新時のトラブルを最小限に抑えられます。まずは今回のサンプルコードを実行して仕組みを確認し、ご自身のテーブル構造やビジネスロジックに合わせて式やデータ型を調整してみてください。

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

この記事を書いた人

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

目次