IF式を組み合わせて列作成~上級編10回目

こんにちは、Excellent仕事術のガッツ鶴岡(@atsushi1039)です

Power Queryは関数やVBAの知識がなくても、直感的にクリックしていくことで処理を進めていけるのが魅力です

 ただ、複雑な処理を行いたい場合にはどうしても複数のIF文をネスト(組み合わせ)し、複数の条件式を組み合わせた新たな列を挿入する必要がでる時もあります

そんな時のためにPower Queryには「列の追加」タブに「カスタム列」というメニューがきちんとあります

 「カスタム列」のメニューの中でIF文を効果的に使えば、一見、複雑に思える「この場合はこう処理して、この場合はこういう風に処理する」といった処理も一定のルールを覚えれば簡単に行えます!

今回は、下の図の売上金額の集計表をもとにして、IF式を組み合わせて新たな列を作成する方法を解説します

売上金額

この記事を最後まで読み終えた時には、一段上のレベルでPower Queryを深く使いこなせるようになっているはずです!

*****Sponsered Link***** ************************

*IF式内にAND条件やOR条件を設定する場合はこちらの記事を参照してください!

 

*記事の最後に完成版のサンプルファイルを添付しています

 今回の記事では「IF文」を活用しながら、上の図の表「売上金額」を元にして来期の売上予測を2つのパターンで作成し、新たな列を2列追加します

来期の売上予測のパターンの1つ目は消極的な予測です

ⅰ)地域がアメリカ ➡ 10%増加

ⅱ)それ以外 ➡ 5%増加

2つ目は積極的な予測です

ⅰ)地域がアメリカ ➡ 15%増加

ⅱ)製品がトラック、且つ、地域がヨーロッパ ➡ 10%増加

ⅲ)上記2つ以外 ➡ 5%増加

1つ目は1つのIF文にて、2つの計算式を組み合わせます

2つ目は2つのIF文を組み合わせることで、3つの計算式を組み合わせます

しかも、2つ目のパターンの3番目の計算式は「且つ」なので「AND」を組み合わせます

さて、

今回作成するIf文を使った計算式を説明しました

次に今回のポイントを解説させて頂きます

ポイント

構文

今回のポイントは何と言っても、IF文を使った構文を的確に記述できるかどうかです

If文を1つ使う場合の構文は次の通りとなります

if 条件式 then 条件式に合致する場合 else 条件式に合致しない場合

次が2つのIF文を組み合わせた時の構文となります

if 条件式1 then 条件式1に合致する場合 else if 条件式2 then 条件式2に合致する場合 else いずれの条件式にも合致しない場合】

カスタム列

今回のIf文は「列の追加タブ」のカスタム列の画面で作成します

こちらの画面では「新しい列名」「カスタム列の式」を指定します

カスタム列の式には「<<挿入」ボタンにより列を挿入できます

こちらの詳細は以降の記事内で詳細に解説させて頂きます

大文字と小文字の区別

 こちらはM言語のシリーズで本格的に解説する内容なのですが、Power Queryの言語であるM言語では大文字と小文字を厳格に区別します

上記の構文の解説にあるように、「if」「then」「elseif」「else」はいずれも小文字で記入する必要があります

それでは、今回のポイントの3点を解説させて頂いたので、本格的な解説に入りたいと思います

目次

1つのIf文作成:消極的パターン

2つのIf文作成:積極的パターン

<まとめ>

1つのIf文作成:消極的パターン

解説は、Power Queryエディターを開いたところから始めます

主な解説内容は、次の①~③があります

①はIF文を作成するメニューの場所

②IF文を実際に作成する画面の詳細

③②を行う上での注意点

では、まずは①から解説します

① IF文を作成するメニューの場所

まず「列の追加」タブの「カスタム列」をクリックします

すると次のような画面が開きます

②IFを実際に作成する画面の詳細

まず、この「カスタム列」画面の解説を3か所に分けて行います

新しい列名➡IF文を使用して新たに作成する列の名称を記入

カスタム列の式➡「=」から右にIF文を記入

<<挿入➡上の「使用できる列」で指定された「列」を式の中に挿入

3番目の「<<挿入」の使い方については、以下、詳細に解説します

まずは上の「使用できる列」の中から該当する「列」をカーソルで選択します

次に画面右下の挿入ボタンを押すと、下のGIF画像のように前述の「カスタム列の式」の欄に選択された列が挿入されます

この「カスタム列画面」の3か所について解説したところで、実際にIF文を記入していきます

IF文の構文は以下の通りとなります

if 条件式 then 条件式に合致する場合 else 条件式に合致しない場合

内容はVBAでIF文を書く場合と、ほぼ一緒です

最後に「End IF」を付けないところだけが違います

If文を記入したら、画面右下のOKボタンを押せばPower Queryエディタ画面に反映されます

上のGIF画面で消極パターンのIf文を書いた画面は、次の通りとなります

上の画像の内容をテキストにしたのが次の数式です

if [地域]=”アメリカ” then [売上金額]*1.1 else [売上金額]*1.05】

③②を行う上での注意点

ここで1点、注意点があります

上の画像の下に「トークン Eof・・・」なるエラーが出ています

これは、式の構文の中に大文字が入っているからです

式の構文は、下のテキストのように、全て小文字で記入するようにしてください

IF、THEN、ELSE ➡ if、then、else

では、正しく数式を記入したところで下のOKボタンを押します

そうすると、Power Queryエディター画面に新たな列が挿入されます

では、念の為に新たに挿入された列が正しいかどうかをPower Queryエディター上で確認します

まず「売上金額」と「予測式_消極」の列をカーソルで入れ替えます

次に上の両列をカーソルで選択したまま「列のタブ」の「標準」から除算をクリックします

すると、次の様に「(左側)予測式_消去」÷「(右側)売上金額」の結果が出力されます

「標準」機能の計算は、列の位置が左にあるものから自動的に計算されてしまうので、列の位置を入れ替えることを事前に行いました

さて、出力結果は次の通り、正確に出力されていたので「積極パターン」の解説に移ります

2つのIf文作成:積極的パターン

まず、積極パターンの内容を振り返りましょう

・地域がアメリカ ➡ 15%増加(A

・製品がトラック、且つ、地域がヨーロッパ ➡ 10%増加(B)

・上記2つ以外 ➡ 5%増加(C)

では上記のA~Cを、「カスタム列を作成する画面」に当てはめると次のような式になります


まず、前述のA( 地域がアメリカ ➡ 15%増加 )は下の式のように、1.の消極パターンと同様の書き方です

if [地域]=”アメリカ” then [売上金額]*1.15】

次にBの箇所を書き始めるところが1.の消極パターンと違います

「else」の後にそのまま2つ目のIF文を「AND」を交えて、下の式のように書きます

else if [地域]=”ヨーロッパ” and [製品別]=”トラック” then [売上金額]* 1.1】

そして最後にCを「else」の後に書きます

else [売上金額]*1.05

そして、上の3つの数式をつなげると次のようになります

if [地域]=”アメリカ” then [売上金額]*1.15 else if [地域]=”ヨーロッパ” and [製品別]=”トラック” then [売上金額]* 1.1 else [売上金額]*1.05

「カスタム列を設定する画面」の下のOKボタンを押すと、次の様に出力されます

1.の消極パターンでも行ったように、検算を行うと次のようになりました

 Bの 条件【製品がトラック、且つ、地域がヨーロッパ ➡ 10%増加】もしっかり反映されています

 上のPower Queryエディタの内容をエクセルシートに読込処理を行うと、次の画像のようになります

<まとめ>

今回は、IF文を使用した列を追加する方法を解説しました

YOUTUBE動画も作成しておりますので、ぜひこちらも参考にしてください

IF文の構文の書き方はVBAとほぼ同じになっており、次の通りとなっています

【if 条件式 then 条件式に合致する場合 else 条件式に合致しない場合

 IF文を更に組み合わせる場合には、上記の「else」の後にまたIF文を追加すればOKです

 尚、構文を間違えていたり、前述した大文字で記入を行ったりすると 「トークン Eof・・・」なるエラーが出てしまいますので注意が必要です

 ちなみに、正確に数式を記入できている場合には、以下のメッセージが画面下にでます!

今回の解説は以上です

この記事の内容をマスターしたら、M言語を使用した「カスタム列」にもぜひチャレンジしてみてください!

長文に最後までお付き合い頂き、誠にありがとうございました

参考までに、今回の解説で使用したデータと完成したデータを添付しておきます



にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村 IT技術ブログ VBAへ

にほんブログ村

*****Sponsered Link***** ************************

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です