PowerQuery if文でカスタム列を作成する|複数条件と入れ子

パワークエリでif文を使って新しい列データを作成する方法を紹介します。
if文の複数条件の設定方法や入れ子(ネスト)についても紹介していますので参考にしてみてください。

ドノ

if文の作成方法を2つ紹介しています!利用しやすい方を参考にしてみてください。
・カスタム列+M言語
・条件列ボタン

目次

if文+カスタム列の使い方(M言語)

カスタム列でのif文による条件分岐は下記のように記述します。
※パワークエリ(M言語)では大文字と小文字が区別されるためif文は全て小文字で記載するようにしてください。

if 条件式 then 条件が真の処理 else 条件が偽の処理

if 条件式 then 条件が真の処理 else 条件が偽の処理 

if文の使用手順

使用方法の例として下記の条件を設定する手順を紹介します。
条件:数値が100以上のときは”OK”、100未満のときは”NG”とする。

STEP
カスタム列の追加

まず、ツールバーの「列の追加」タブ内にある「カスタム列」をクリックしてカスタム列の設定画面を開く。

STEP
if文による条件分岐列の作成

下記の条件式を入力して保存をクリックする。
式の意味は[数値]が100以上ならば”OK”として、それ以外ならば”NG”とするといったものです。

if [数値] >= 100 then "OK"
else "NG"
STEP
条件分岐による判定フィールドの作成完了

以上でIF文による条件分岐フィールドの作成は完了です。100以上がOK、100未満がNGとなっています。

カスタム列での列データの利用方法

式の中で列データを使用する場合は列名を選択したあとに「挿入」をクリックします。

列名を [ ] で囲んで記載してもOK。

複数条件の設定(and条件, or条件)

IF文の条件文は「and」と「or」を使用することで複数条件を設定することができます。
※and条件とor条件は組み合わせて使用可能です。

  • and:条件1と条件2の両方が真の場合、真となる
  • or:条件1か条件2のどちらかが真の場合、真となる
if [条件式1] and [条件式2] then [条件1と条件2が真の結果] else [偽の結果] 
if [条件式1] or [条件式2] then [条件1か条件2が真の結果] else [偽の結果] 
ドノ

ひとつの条件式の中で and と or を組み合わせ使うこともできます

if文の入れ子・ネスト

if文の中にさらにif文を入れて複数回の条件分岐を行うことも可能です。
下記のようにif~thenのあとにif文をさらに記載することで条件分岐を増やすことができます。ここでは条件3までしか記載していませんがさらに追加することも可能です。

if [条件式1] then
 if [条件式2] then
    if [条件式3] then [条件1、条件2、条件3のすべてが真の処理]
    else [条件1と条件2が真、条件3が偽の処理]
 else [条件1が真、条件2が偽の処理]
else [条件1が偽の処理]

イメージとしては下図のようになります。

また、下記のようにif~then~elseのあとにif文を追加することも可能です。else ifを増やしていくことで条件式がfalse(偽)だったときの条件を増やしていくことができます。イメージとしては下図のようになります。

if [条件式1] then [条件1が真の処理]
else if [条件式2] then [条件2が真の処理]
else if [条件式3] then [条件3が真の処理]
else [すべての条件が偽の処理]

比較演算子・論理演算子

if文の条件式の中で等しい・等しくない・以上・以下など様々な比較演算子を利用すると思います。ざっと下記にまとめてますので参考にしてみてください。

比較演算子意味
=等しい
<>等しくない
>より大きい
<未満
>=以上
<=以下
and論理積
or論理和
not論理否定

Sponsored link

if null と if not nullの条件式

if関数の条件式で「値がnull」または「値がnullではない」という条件を使用する場合が多々あると思います。その書き方を紹介します。

if null の条件式

まずは「値がnull」という条件式についてですが、[列名] = null と記載すればOKです。

if [列名] = null then [NULLの場合の処理] then [NULL以外の処理] 

if not null の条件式

次に「値がnullではない」という条件を表現する場合についてですが、以下のように記載します。

  • [列名] <> null
  • not ( [列名] = null )
if [列名] <> null then [NULLの場合の処理] then [NULL以外の処理] 
if not ([列名] = null) then [NULLの場合の処理] then [NULL以外の処理] 

if 空白 の条件式

さいごに「値が空白」という条件式についてですが、[列名] = “” と記載すればOKです。

if [列名] = "" then [空白の場合の処理] then [空白以外の処理] 

Sponsored link

文字列を含む または 含まない条件式

次にif関数において 指定の文字列を含むか含まないかといった条件式の書き方を紹介します。

文字列を含む の条件式

指定の文字列を含む場合に処理を実行したい場合は下記のように記載します。それぞれの項目を任意に設定して使用してください。

  • [列名]:指定の文字列が含むか調べたい列
  • “文字列”:指定の文字列
  • 文字列が含む場合の値:指定文字列が含む場合の値や処理
  • 文字列が含まれない場合の値:指定文字列が含まれない場合の値や処理
if Text.Contains([列名],"文字列") then 文字列が含む場合の値 else 文字列が含まれない場合の値

if elseの行を追加することで複数の文字列にも対応できます

文字列を含まない の条件式

指定の文字列を含まない場合に処理を実行したい場合は下記のように記載します。含む場合の条件式にnotを追加すればOKです。

if not Text.Contains([列名],"文字列") then 文字列が含まない場合の値 else 文字列が含む場合の値

if elseの行を追加することで複数の文字列にも対応できます

より詳しい内容はこちらの記事を紹介してますので参考に見てみてください。

Sponsored link

文字列置換の条件式

次にif関数とカスタム列を用いて文字列を置換する条件式を紹介します。

完全一致の文字列置換

列の文字列データと完全一致した場合に文字列を置換する式は下記の通りです。

if [列名] = "置換前の文字列1" then "置換後の文字列1"
else if [列名] = "置換前の文字列2" then "置換後の文字列2"
else if [列名] = "置換前の文字列3" then "置換後の文字列3"
else if [列名] = "置換前の文字列4" then "置換後の文字列4"
else if [列名] = "置換前の文字列5" then "置換後の文字列5"
else [列名]

複数文字列に対応できるように記載してありますが、if elseの行を削除すればひとつの文字列の置換も可能です。また、else ifの行を増やすことで置換する文字列を増やすことも可能です。

部分一致の文字列置換

列の文字列データの一部分だけを置換する式は下記のように記述します。

式の内容としては対象の列のそれぞれの行データに置換したい文字列が含まれているかチェックして、含まれている場合はその文字列を別の文字列に置換するといったものです。

if Text.Contains([列名],"置換前の文字列1") then Text.Replace([列名],"置換前の文字列1","置換後の文字列1")
else if Text.Contains([列名],"置換前の文字列2") then Text.Replace([列名],"置換前の文字列2","置換後の文字列2")
else if Text.Contains([列名],"置換前の文字列3") then Text.Replace([列名],"置換前の文字列3","置換後の文字列3")
else [列名]

複数文字列に対応できるように記載してありますが、if elseの行を削除すればひとつの文字列の置換も可能です。また、else ifの行を増やすことで置換する文字列を増やすことも可能です。

より詳しい内容はこちらの記事を紹介してますので参考に見てみてください。

Sponsored link

条件列ボタンの使い方(UI操作)

最後にマウス操作により条件分岐の列を作成する方法を紹介します。これには、列の追加タブ内の「条件列」を使います。

条件列ボタンの基本的な使い方は、条件設定画面の「条件式」「条件が真の場合の出力」「条件が偽の場合の出力」の3か所を設定して使います。

  • 列名: 条件式の入力列
  • 演算子: 比較条件(一致 や 以上以下等)
  • 値: 比較する値 または 列
  • 出力: 条件が「真」のときの出力値 または 出力列
  • それ以外の場合: 条件が「偽」のときの結果 または出力列

値や出力に列データを使いたい場合は、下図の「列の選択」をクリックすればOKです。

条件列ボタンの使用手順

使用方法の例として下記の条件を設定する手順を紹介します。
条件:数値が100以上のときは”OK”、100未満のときは”NG”とする。

STEP
条件列の追加

まず、ツールバーの「列の追加」タブ内にある「条件列」をクリックして条件列を追加する。

STEP
条件列の設定

条件(数値が100以上のときは”OK”、それ以外は”NG”)に沿って、下記のように項目を設定してOKをクリックする。

  • 新しい列名:判定
  • 列名:数値
  • 演算子:次の値以上
  • 値:100
  • 出力:OK
  • それ以外の場合:NG
STEP
条件分岐による判定フィールドの作成完了

以上で条件列ボタンによる条件分岐フィールドの作成は完了です。100以上がOK、100未満がNGとなっています。

複数条件の設定

複数条件を作成したい場合は「句の追加」をクリックすることで新しい条件を追加することができます。

※右側にある「・・・」をクリックすれば 条件分の順番の変更 や 条件文の削除が行えます。

ドノ

こちらの複数条件設定は、カスタム列でelse if を用いた場合と同じ条件となります

Sponsored link

Power Queryのおすすめ書籍

パワークエリの学習本についてはコチラの記事でまとめてますので参考にしてみてください。

初心者向けおすすめ学習本

初中級者向けおすすめ学習本

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

コメントは日本語で入力してください。(スパム対策)

CAPTCHA

目次