実務で使えるPower Query小技・テクニック | ステップを変数として利用する

Excel VBA Power Query M Formula Language
スポンサーリンク
スポンサーリンク

ステップを変数として利用する

Power Query(M言語)を実務で使う際に、「ステップ=変数」という発想を理解すると、コードの読みやすさ・保守性・応用力が一気に向上します。 初心者が最初に戸惑うポイントですが、仕組みはとてもシンプルで、むしろ“変数として扱えるからこそ”Power Queryは強力です。

ここでは、ステップを変数として扱う意味・使い方・応用までを、例題とテンプレートを交えてステップバイステップで解説します。

ステップは「ただの名前」ではなく“変数”である

ステップ名=変数名

Power Query の let … in 構造では、次のように書きます。

let
    Step1 = ...,
    Step2 = Step1 + 10,
    Step3 = Step2 * 3
in
    Step3
Power Query

ここで重要なのは、

Step1・Step2・Step3 はすべて「変数」であり、値を保持している

という点です。

Excel のセル参照(A1、B2)と同じように、 後続ステップで前のステップを参照できるのが M 言語の最大の特徴です。

ステップを変数として扱うメリット

1. 処理を分割できる

複雑な処理を一行で書く必要はありません。 ステップごとに分けて書けば、読みやすく、修正しやすくなります。

2. 再利用できる

同じ処理結果を複数のステップで使いたい場合、変数として保持しておけば何度でも使えます。

3. デバッグしやすい

途中のステップを in に返すだけで、簡単に中間結果を確認できます。

ステップを変数として扱う例題

例題:売上テーブルを読み込み → フィルタ → 列追加 → ソート

let
    Source = Excel.CurrentWorkbook(){[Name="売上"]}[Content],

    FilteredHighAmount =
        Table.SelectRows(Source, each [金額] > 1000),

    AddedTaxColumn =
        Table.AddColumn(FilteredHighAmount, "税込金額", each [金額] * 1.1),

    SortedByTax =
        Table.Sort(AddedTaxColumn, {{"税込金額", Order.Descending}})
in
    SortedByTax
Power Query

ここでのポイントは、

  • Source は「元データ」
  • FilteredHighAmount は「金額 > 1000 の行だけ」
  • AddedTaxColumn は「税込金額列を追加したテーブル」
  • SortedByTax は「税込金額でソートしたテーブル」

というように、各ステップが“変数としての値”を持っていることです。

ステップを変数として扱う深掘りポイント

変数は「テーブル」「リスト」「レコード」など何でも保持できる

M言語の変数は、数値だけでなく、テーブル・リスト・レコードなど、どんなデータ構造でも保持できます。

例:

let
    Numbers = {1,2,3,4},
    Sum = List.Sum(Numbers)
in
    Sum
Power Query

Numbers は「リスト」、Sum は「数値」です。 この柔軟性が M 言語の強みです。

ステップ名を変数として使うときの注意点

1. ステップ名は必ず一意であること

同じ名前を使うとエラーになります。

2. ステップ名は英語で意味が分かる名前にする

変数として扱う以上、名前が読みやすいほど保守性が上がります。

例:

  • Good:FilteredValidRows
  • Bad:Step2、AddedCustom、ChangedType

3. ステップは「上から順番に評価される」

後のステップで前のステップを参照するため、順番がとても重要です。

ステップを変数として扱うテンプレート集

テンプレ1:中間結果を保持する

let
    Source = ...,
    Cleaned = Table.TransformColumns(Source, {{"顧客コード", Text.Trim, type text}}),
    Valid = Table.SelectRows(Cleaned, each [顧客コード] <> "")
in
    Valid
Power Query

テンプレ2:複数の中間結果を再利用する

let
    Source = ...,
    Filtered = Table.SelectRows(Source, each [数量] > 0),
    AmountCalc = Table.AddColumn(Filtered, "金額", each [数量] * [単価]),
    Summary = Table.Group(AmountCalc, {"顧客コード"}, {{"合計金額", each List.Sum([金額]), type number}})
in
    Summary
Power Query

テンプレ3:中間結果をデバッグする

let
    Source = ...,
    Cleaned = Table.TransformColumns(Source, {{"商品コード", Text.Trim, type text}})
in
    Cleaned   // ← 中間結果を返して確認できる
Power Query

ステップを変数として扱う応用

応用1:複数のステップをまとめて返す(レコードとして返す)

let
    Source = ...,
    Valid = ...,
    Error = ...
in
    [正常行 = Valid, エラー行 = Error]
Power Query

Power Query では、レコードを返すことで「複数の結果」を返すこともできます。

応用2:ステップを関数に渡す

let
    Source = ...,
    Cleaned = Table.TransformColumns(Source, {{"顧客コード", Text.Trim, type text}}),
    Result = MyCustomFunction(Cleaned)
in
    Result
Power Query

ステップ(変数)を関数の引数として渡すことも可能です。

まとめ:ステップ=変数を理解すると M 言語が一気に簡単になる

ステップを変数として扱うことは、M 言語の本質です。 これを理解すると、次のようなメリットがあります。

  • クエリが読みやすくなる
  • 修正しやすくなる
  • 再利用しやすくなる
  • 複雑な処理を分割して書ける
  • 他の人が読めるクエリになる

つまり、実務で通用する M 言語の書き方の基礎になります。

タイトルとURLをコピーしました