Power Queryの「if」関数を徹底解説!条件分岐でデータを自在に変換する方法

Power Queryは、ExcelやPower BIでデータを効率よく整形・加工できる強力なツールです。中でも「if」関数を使えば、条件に応じて値を分岐させることができ、複雑なデータ処理を簡単に自動化できます。
この記事では、Power Queryの「if」構文の基本から、複数条件の指定方法、ネスト構文、そして実務で使える応用例までを、初心者にもわかりやすく解説します。


Power Queryの「if」とは?

Power Queryの「if」は、特定の条件を満たす場合に値を返す「条件分岐関数」です。
ExcelのIF関数と同じように使えますが、構文の書き方が少し異なります。Power Query(M言語)では次のように書きます。

if 条件 then 真の場合の値 else 偽の場合の値

例:売上が100以上なら「合格」、それ以外なら「不合格」

if [売上] >= 100 then "合格" else "不合格"

このように1行で条件判定と出力をまとめられるため、シンプルで直感的です。


Power Queryの「if」構文の基本ルール

Power Queryの「if」文を使うときは、次のポイントを押さえておく必要があります。

  1. thenelseは必須
    • ifのあとに必ずthenelseを続けます。
    • elseを省略するとエラーになります。
  2. 条件には比較演算子を使う
    • =, <>, >, <, >=, <=などを使用します。
  3. 文字列の比較はダブルクォーテーションで囲む
    • "完了", "未完了" のように書きます。
  4. データ型に注意する
    • 数値・文字列・日付など、型が一致しないとエラーになることがあります。

複数条件を指定する方法

単純な条件分岐だけでなく、「かつ(AND)」や「または(OR)」を組み合わせて、複数条件を処理することも可能です。

AND条件(かつ)

2つの条件を同時に満たす場合に真とする:

if [売上] >= 100 and [利益] > 0 then "優良" else "改善必要"

OR条件(または)

どちらか一方を満たせば真とする:

if [顧客区分] = "A" or [顧客区分] = "B" then "重要顧客" else "一般顧客"

入れ子(ネスト)した「if」構文

条件が3つ以上ある場合は、「if」を入れ子にして書きます。
ExcelのIFS関数のような使い方をPower Queryでも実現できます。

例:点数によってランクをつける

if [点数] >= 80 then "A" 
else if [点数] >= 60 then "B" 
else if [点数] >= 40 then "C" 
else "D"

解説:

  • 最初に当てはまる条件が見つかると、そこで判定が終了します。
  • ネストの深さに制限はありませんが、読みやすく保つことが大切です。

数値・文字列・日付を判定する実用例

✅ 数値を使った判定

if [在庫数] = 0 then "欠品" else "在庫あり"

在庫管理などでよく使うパターンです。

✅ 文字列を使った判定

if [状態] = "完了" then "済" else "未"

文字列比較では、ダブルクォーテーションを忘れずに。

✅ 日付を使った判定

if [日付] >= #date(2025, 1, 1) then "新年度" else "前年"

#date(年, 月, 日) の形式で日付を指定します。


「if」関数を使ったカスタム列の作成方法

  1. Power Queryエディターを開く
    • Excelの「データ」タブ → 「データの取得と変換」→ 「Power Queryエディターを開く」。
  2. カスタム列を追加
    • 「列の追加」→「カスタム列」。
  3. 式を入力する
    • 例:if [売上] >= 100 then "合格" else "不合格"
  4. OKをクリックして確認
    • 条件に応じた結果が新しい列に表示されます。

Power Queryでは「カスタム列」だけでなく、「条件列」を使うとGUIで同様の設定もできます。
ただし柔軟な条件を組むなら「カスタム列」でM言語を直接書くほうが便利です。


「null(空白)」を条件に使う方法

Power Queryでは空白セルは「null」として扱われます。
そのため、Excelの「=””」とは異なり、次のように書く必要があります。

if [日付] = null then "未入力" else "入力済み"

ただし、これでは常に「false」になることがあります。
正しい書き方は「Value.IsNull」関数を使う方法です。

if Value.IsNull([日付]) then "未入力" else "入力済み"

「if」と他の関数を組み合わせる応用例

1. テキスト操作関数と組み合わせる

if Text.StartsWith([商品名], "A") then "A商品" else "その他"

→ 「A」で始まる商品を抽出。

2. 四則演算と組み合わせる

if [数量] > 10 then [単価] * 0.9 else [単価]

→ 数量が多い場合に自動で割引。

3. 日付関数との組み合わせ

if Date.Month([日付]) = 12 then "年末" else "通常月"

→ 月ごとに条件分岐してレポート分類。


「if」構文でよくあるエラーと対処法

❌ エラー1:elseを省略している

Power Queryではelseが必須です。
if 条件 then 値 else 値 の形に必ずする。

❌ エラー2:データ型が一致しない

例:数値型と文字列型を混在させるとエラー。
→ 必要に応じてNumber.ToText()Text.ToNumber()で変換。

❌ エラー3:null判定が正しくできない

Value.IsNull()を使う。


実務で役立つ「if」活用例

✅ 売上評価表を自動判定

if [売上] >= 500000 then "S"
else if [売上] >= 300000 then "A"
else if [売上] >= 100000 then "B"
else "C"

✅ 顧客の分類を自動化

if [購入回数] >= 10 then "リピーター"
else if [購入回数] >= 3 then "通常顧客"
else "新規顧客"

✅ 日付でキャンペーン判定

if [注文日] >= #date(2025,10,1) and [注文日] <= #date(2025,10,31)
then "ハロウィンキャンペーン"
else "通常注文"

まとめ

Power Queryの「if」関数は、データを条件に応じて自動的に分類・変換するための強力なツールです。
単純な条件から複数条件・ネスト構文・日付やnull判定まで使いこなせば、Excelの手作業を大幅に減らすことができます。

ポイントは次の3つです:

  1. 構文は「if 条件 then 値 else 値」
  2. null判定にはValue.IsNull()を使う
  3. 複雑な条件はネストで整理

Power Queryを活用すれば、データ整形の効率が格段に上がります。
日常業務の自動化やレポート作成にもぜひ取り入れてみてください。

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