PR

Power Queryでif文を使いこなす

Power Query基礎
スポンサーリンク

Power QueryではExcelのIFと同じ数式が使えます。M言語を使って直接数式を入力することもできれば、マウスをぽちぽちクリックして画面操作だけでも完結できます。

以下の成績表で試験の合否と評価を行うとします。

Excelの数式を使おうとすると、条件分岐でIF文を駆使することになります。

「合否」は

=IF([@合計]>=140, “合格”, “不合格”)

といった数式になります。これはまだ単純なので書きやすいと思います。

「評価」は

=IF(AND([@英語]>=90,[@数学]>=90), “A”, IF(AND([@合否]=”合格”,OR([@英語]>=90,[@数学]>=90)),”B”,IF([@合否]=”合格”,”C”,IF(NOT([@合否]=”合格”),”D”,””))))

といった数式になります。ここまで来ると書く方も読む方も辛くなってきます。

Power Queryではどうやって条件分岐(if文)を書くか解説していきます。

スポンサーリンク

条件列を使って条件分岐を作る

Power Queryの「条件列」を使えば、数式を書かずに条件分岐を作れます。

まず事前に、Power Queryでデータを取得しましょう。

テーブルのセルを選択した状態にして、「データ」タブを開き「テーブルまたは範囲から」をクリックします。

A1セルなどを選択した状態であれば、選択したテーブルの成績表が読み込まれます。

条件列で合否を判定する列を追加する

「列の追加」タブを開き、「条件列」をクリックします。

「新しい列名」に「合否」を入力、「列名」に「合計」列を選択、「演算子」は「次の値以上」、「値」は「140」、「出力」は「合格」、「それ以外の場合」に「不合格」と入力し、OKをクリックします。

この設定を行えばif文の書き方を知らなくても、Excelで「=IF([@合計]>=140, “合格”, “不合格”)」と書いたことと同じ数式を生成して、新たな列を追加してくれます。

複数条件をつける(and条件、or条件)→出来ませんでした

ExcelでA1=”○”かつB1=”○”という条件をつけたい場合、「AND(A1=”○”, B1=”○”)」といったように、AND条件が使えます。

しかし、「条件列」は数式を知らなくても条件分岐を作れる反面、andやorの条件指定が出来ません。

andやorの条件指定をしたい場合は、「カスタム列」を使って直接数式を書きましょう。

カスタム列を使って条件分岐を作る

if文の書き方

ifの構文は次のとおりです。

M言語

if <条件> then <条件が真の場合> else <偽の場合>

Power Queryの数式(M言語)は大文字小文字を区別します。if文は全て小文字で入力して下さい。

カスタム列を使って新たな列を作り、そこに数式を書くことが出来ます。

「列の追加」タブを開き、「カスタム列」をクリックします。

「新しい列名」に「合否」を入力、「カスタム列の式」に「if [合計] >= 140 then “合格” else “不合格”」を入力し、OKをクリックします。

「使用できる列」に数式で使いたい列名を選択した状態で「挿入」をクリックすると、列名が挿入できます。「挿入」をクリックせずに、列名をダブルクリックしても同じ動きになります。

合計列が140以上の場合に合格、それ以外のときに不合格と表示する数式の列が追加されました。

「ホーム」タブを開き、「閉じて読み込む」をクリックします。

「合否」列が追加されました。

複数条件をつける(and条件、or条件)

and、orをつけることによって、条件が2つありどちらも真の場合、あるいは片方が真の場合といった条件分岐が出来ます。

M言語

if <条件1> and <条件2> then <条件1かつ条件2が真の場合> else <偽の場合>

if <条件1> or <条件2> then <条件1または条件2が真の場合> else <偽の場合>

andを使った例として、英語と数学が両方とも90点以上の場合に「A」と表示する数式は次の通りです。

= if [英語] >= 90 and [数学] >= 90 then "A" else "D"

orを使った例として、英語または数学90点以上の場合に「B」と表示する数式は次の通りです。

= if [英語] >= 90 or [数学] >= 90 then "B" else "D"

notをつければ否定形になる

notをつけることで否定形になります。英語と数学が両方とも90点以上の場合に「A」と表示する条件の頭にnotをつけると、結果が反転します。

= if not([英語] >= 90 and [数学] >= 90) then "A" else "D"

3つ以上条件分岐を作る

条件分岐が2つの場合について解説してきました。条件分岐が3つ以上ある場合はどうすればいいでしょうか?

else if を使うことで3つ以上作れます。構文は次のとおりです。

M言語

if <条件1> then <条件1が真の場合> else if <条件2> then <条件2が真の場合> else <偽の場合>

else if を使って、「評価」列を追加していきます。

カスタム列を使って、条件分岐が4つある次の数式を入力してOKをクリックします。

= if [英語] >= 90 and [数学] >= 90 then "A"
else if [合否] = "合格" and ([英語] >= 90 or [数学] >= 90) then "B"
else if [合否] = "合格" then "C"
else "D"

列が追加されます。

「ホーム」タブを開き、「閉じて読み込む」をクリックします。

「評価」列が追加されました。

スポンサーリンク
Power Queryの学習に役立つおすすめ本
初心者向け 初心者~中級者向け 中級者~上級者向け
プロフィール
たがみ

IT業界20年程度のシステムエンジニアです。
構築したシステムのデータ検証をExcelで実施することが多く、検証作業の効率化を模索しているときにPower Queryと出会いました。
Excel業務効率化の手助けになればと当ブログを解説しました。
今ではデータ分析でPower BIを活用しており、Power BI、Excelの両方でPower Queryを活用しています。

たがみをフォローする
Power Query基礎
たがみをフォローする
タイトルとURLをコピーしました