パワークエリの「if式」のサムネイル
AさんAさん

「条件列」コマンドだと、AND条件やOR条件等の高度な条件分岐が設定できませんね。
Power Queryエディター上でAND条件やOR条件の条件分岐を行う場合、どうしたら良いですか?

森田森田

その場合、Power Queryエディター上の「if式」を使えば良いですよ!
では、詳細を解説していきますね。

Excelステップ講座

はじめに

この記事は「条件列」・「カスタム列」コマンドの詳細を把握していることが前提です。

参考記事

「条件列」・「カスタム列」コマンドの詳細は、以下の記事をご参照ください。


「if式」の使いどころ

通常、クエリ内の一連の整形作業の中で、既存の列を対象に条件分岐を行いたい場合、Power Queryエディター上の「条件列」コマンドを使います。

しかし、「条件列」コマンドは、条件分岐の種類を増やすことはできても、AND条件やOR条件には対応できません。
AND条件=複数条件をすべて満たすことを条件にしたもの、OR条件=複数条件のいずれか1つを満たすことを条件にしたもの。

その他、論理式やその結果の値は、定数を指定するか、既存列を参照するのみで、M関数を用いることも不可能です。

こうした高度な条件分岐を行いたい場合、「カスタム列」ダイアログ上で「if式」を活用しましょう。

パワークエリの「if式」の使いどころ

if式を活用することで、AND・OR条件やM関数を含めた高度な条件分岐を行う条件列を設定できます。

構文

if式の構文で代表的な4パターンを解説します。

いずれも「if」等の英字部分は半角で数式内に直接入力しましょう。

また、論理式で使う比較演算子(>=等)はワークシート上のIF関数等と一緒のルールです。

なお、if式(M言語)の構文は、VBAのIfステートメントに似ています。
Power Queryエディターの各ステップはM言語で記録されている。

ただし、VBAのIfステートメントと違い、最後の「End If」が不要になる点が異なるため、VBAを使える方は注意が必要です。

2種類(単一条件)の条件分岐

if 論理式 then 値が真の場合 else 値が偽の場合

「条件列」コマンドで実現可能な条件分岐のため、M関数を使わない場合は実務上で使用しないことを推奨。

3種類以上(複数条件)の条件分岐

if 論理式1 then
 値が真の場合1
else if 論理式2 then
 値が真の場合2
else
 値が偽の場合

「条件列」コマンドで実現可能な条件分岐のため、M関数を使わない場合は実務上で使用しないことを推奨。
「値が真の場合n」・「値が偽の場合」は半角スペースでインデント風にした方が数式が見やすい。
条件分岐の種類を増やしたい場合、「else if」・「論理式n」・「値が真の場合n」をセットで追加。

AND条件の条件分岐

if 論理式1 and 論理式2 then
 値が真の場合
else
 値が偽の場合

「値が真の場合」・「値が偽の場合」は半角スペースでインデント風にした方が数式が見やすい。
AND条件を増やしたい場合、「and」・「論理式n」をセットで追加。
条件分岐の種類を増やしたい場合、「else if」・「論理式n」・「値が真の場合n」をセットで追加。

OR条件の条件分岐

if 論理式1 or 論理式2 then
 値が真の場合
else
 値が偽の場合

「値が真の場合」・「値が偽の場合」は半角スペースでインデント風にした方が数式が見やすい。
OR条件を増やしたい場合、「or」・「論理式n」をセットで追加。
条件分岐の種類を増やしたい場合、「else if」・「論理式n」・「値が真の場合n」をセットで追加。

数式例・使用イメージ

if式の数式例とその結果をパターンごとに解説します。

2種類(単一条件)の条件分岐

2種類の条件分岐のif式として、「売上金額」列が500000以上だったら「A」、それ以外は「B」にする場合は、以下の通りです。

パワークエリの「if式」の数式例・使用イメージ(2種類の条件分岐)

3種類以上(複数条件)の条件分岐

3種類の条件分岐のif式として、「売上金額」列が1000000以上だったら「A」、「売上金額」列が500000以上だったら「B」、それ以外は「C」にする場合は、以下の通りです。

パワークエリの「if式」の数式例・使用イメージ(3種類以上の条件分岐)

AND条件の条件分岐

AND条件の条件分岐のif式として、「売上金額」列が500000以上かつ「数量」列が10000以上だったら「A」、それ以外は「B」にする場合は、以下の通りです。

パワークエリの「if式」の数式例・使用イメージ(AND条件の条件分岐)

OR条件の条件分岐

OR条件の条件分岐のif式として、「売上金額」列が500000以上または「数量」列が10000以上だったら「A」、それ以外は「B」にする場合は、以下の通りです。

パワークエリの「if式」の数式例・使用イメージ(OR条件の条件分岐)

ステップ登録手順

「if式」コマンドのステップを登録したい場合は、以下の手順となります。

「if式」のステップ登録手順

  1. リボン「列の追加」タブをクリック
  2. 「カスタム列」をクリック
  3. 任意の列名を入力
    ※今回は「売上ランク」
  4. 任意のif式を入力
    ※今回は「if [売上金額]>=500000 then “A” else “B”」
  5. 「OK」をクリック

登録したステップの変更手順

「if式」コマンドで登録したステップを後から変更する場合、以下の手順となります。

「if式」のステップ変更手順

  1. 「追加されたカスタム列」ステップの歯車マークをクリック
  2. 任意の箇所を修正
  3. 「OK」をクリック

手順①のステップ名は「カスタム列」コマンドのデフォルトの名前(自身でリネームしている場合は別表記)。
手順①はステップ名をダブルクリックでもOK。
手順①で起動した「カスタム列」ダイアログは、ステップに設定した内容がセットされた状態。
元のif式が「条件列」ダイアログで登録できる内容(単一条件・複数条件の条件分岐)の場合、手順①で「条件列の追加」ダイアログで起動される(設定内容はif式の通り)。

サンプルファイルで練習しよう!

可能であれば、以下のサンプルファイルをダウンロードして、実際に操作練習をしてみてください。

サンプルファイル_PowerQueryデータ整形_if式.xlsx

サンプルファイルのダウンロードには無料メルマガに登録いただく必要があります(上記リンクから登録フォームへ遷移します)。

ブックを開いたら、「売上明細」クエリを編集(Power Queryエディター起動)し、次の手順を実施してください(今までの解説のまとめです)。
ブック起動時、「セキュリティの警告」メッセージが表示された場合は「コンテンツの有効化」をクリック。

  1. リボン「列の追加」タブをクリック
  2. 「カスタム列」をクリック
  3. 任意の列名を入力
    ※今回は「売上ランク」
  4. 任意のif式を入力
    ※今回は「if [売上金額]>=500000 then “A” else “B”」
  5. 「OK」をクリック

本記事の解説と同じ結果になればOKです!

さいごに

いかがでしたでしょうか?

if式を活用することで、AND・OR条件やM関数を含めた高度な条件分岐を行う条件列を設定できます。

一連の整形作業の中で、高度な条件分岐が必要な場合に活用してみましょう!

なお、パワークエリの各種テクニックは、私の拙著でも体系的に解説していますので、こちらも参考にしてみてください。


また、よりコアな情報を発信していくために「公式LINE」を開始しましたので、ご興味があれば以下バナーから友だち追加をお願いします!
特典として、Excelワークシート関数一覧(計22スライド)やExcelショートカットキー一覧(計25スライド)等をプレゼント!

森田貢士の公式LINEへの友だち追加告知用バナー

ご参考になれば幸いですm(_ _)m

森田森田

if式に慣れたら、同じく「カスタム列」ダイアログ上でセットできるM関数もチャレンジしてみましょう。
M関数は、Power Queryエディター上のコマンドでは対応できない処理を行いたい場合に役立つものから優先的に覚えることがおすすめです。
具体的には、数値の四捨五入を算術型丸めにできる「Number.Round」や、日付列の月の加減算ができる「Date.AddMonths」、日付列の月末を計算できる「Date.EndOfMonth」等です。

どんなM関数があるかは、Microsoft社公式ページの「Power Query M関数参照」も参照してみてくださいね!