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」文を使うときは、次のポイントを押さえておく必要があります。
- thenとelseは必須
if
のあとに必ずthen
とelse
を続けます。else
を省略するとエラーになります。
- 条件には比較演算子を使う
=
,<>
,>
,<
,>=
,<=
などを使用します。
- 文字列の比較はダブルクォーテーションで囲む
"完了"
,"未完了"
のように書きます。
- データ型に注意する
- 数値・文字列・日付など、型が一致しないとエラーになることがあります。
複数条件を指定する方法
単純な条件分岐だけでなく、「かつ(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」関数を使ったカスタム列の作成方法
- Power Queryエディターを開く
- Excelの「データ」タブ → 「データの取得と変換」→ 「Power Queryエディターを開く」。
- カスタム列を追加
- 「列の追加」→「カスタム列」。
- 式を入力する
- 例:
if [売上] >= 100 then "合格" else "不合格"
- 例:
- 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つです:
- 構文は「if 条件 then 値 else 値」
- null判定には
Value.IsNull()
を使う - 複雑な条件はネストで整理
Power Queryを活用すれば、データ整形の効率が格段に上がります。
日常業務の自動化やレポート作成にもぜひ取り入れてみてください。