今回は実務で最もよく使うIF文(IF関数)について紹介する。
IF文(IF関数)は条件に応じて異なる結果を返すことが出来るものだ。
非常に便利なのだが、他の関数に比べると使い方がやや複雑なため、本記事で使い方を明確に把握してもらえれば幸いだ。
IF文の使い方
IF文は1つの条件式を判定して値を返すシンプルなパターンもあれば、複数の条件式を判定してそれぞれの結果ごとに値を返すやや複雑なパターンもある。
1つずつ説明していこう。
シンプルなIF文のパターン
まずはシンプルなIF文の使い方だ。
基本は下記となる。
上記の構文をもう少しわかりやすく訳すと
「条件式①を判定して、条件に合う場合(つまり、TRUEの場合)は値①を返す。
もし条件に合わない場合(つまり、FALSEの場合)は値②を返す」
という意味になる。
「何が何だかよくわからない、、、」という人も多いはずなので、具体例で確認しよう!
下記はシンプルなIF文を使用して、半期を作成した例だ。
※上期が1月~6月、下期が7月~12月の会社を想定。
IF文を使用することで上期と下期という半期を表すことが出来ている。
半期を作成している計算フィールドのIF文を詳しく説明すると下記だ。
※MONTH関数は日付フィールドの月を整数で返してくれる関数
Tableauの日付フィールドは自動で四半期や月のフィールドをドリルダウンで表示できるのだが、半期は計算フィールドで作成しないといけない。
実際の実務において、IF文やIIF関数を使ってこの半期を作成することはすごく多い。
会社によって半期の区切り方が異なるので、条件式を調整する必要はあるが、上記計算フィールドの例は実務でそのまま使えるはずだ。
ちなみにELSE ~の部分は省略可能だ。
ELSEを省略した場合は下記のように条件に当てはまらない場合は「何も返さない」=NULLになる。
上記のようにELSEは省略可能だが、ENDは省略不可なのでよく覚えておいて欲しい(慣れるまでは結構忘れがち)。
複数条件を判定するIF文の場合
次にもう少し複雑なIF文を見ていこう。
複数の条件で場合分けをしたい場合はELSE IFを加えて下記のような使い方をする。
例えば、下記のように2022年における地域別の売上と利益率の一覧があるとする。
これを売上と利益率の観点から会社の貢献度別に分けたセグメントをIF文で作成したのが下記だ。
上記は各地域における売上と利益率に応じて下記のようにIF文で場合分けして値を出し分けている。
- 売上が1000万円以上&利益率が10%以上(0.1以上)の場合:貢献度大
- 売上が1000万円以上&利益率が0%以上(つまり黒字)の場合もしくは売上が500万円以上で利益率が10%以上の場合:貢献度中
- 売上が0円以上で利益率が0%以上の場合:貢献度小
- それ以外の場合(つまり、利益率がマイナス=赤字の場合):徹底検討
計算式の詳細は下記だ。
上記計算式を訳すと
「売上が1000万円以上かつ利益率が10%以上(条件式①)」であれば「貢献度大」を返す。
「(条件式①に当てはまらない場合で)売上が1000万円以上かつ利益率が0%以上の場合もしくは売上が500万円以上かつ利益率が10%以上の場合(条件式②)」であれば「貢献度中」を返す。
「(条件式①にも②にも当てはまらない場合で)売上が0円以上かつ利益率が0%以上の場合(条件式③)」であれば「貢献度小」を返す。
(条件式①~③全てに当てはまらない場合は)「撤退検討」を返す
という意味になる。
IF文は上記条件式①のように複数の条件を組み合わせて1つの条件式を作り、条件に当てはまるかの判定することも出来るし、上記条件式②のように複数の条件式を()で括って条件Aと条件Bどちらかが当てはまればOK、という形にすることも出来る。
実務でIF文を活用する時は上記例のように複数の条件を組み合わせた条件式を作った上で判定する使い方が多いので、このIF文の使い方を覚えておくと活用の幅がグッと広がるはずだ!
IIF関数との違い
「IF文はIIF関数と何が違うのか?」と思っている人も多いはずだ。
IIF関数で出来ることはシンプルなIF文(ELSEIFを使わないパターン)で行えることと同じでIF文の簡略版(機能制限版)と考えておくと理解しやすいかもしれない。
IF文とIIF関数を比較すると下記のようになる。
IIF関数のメリットはシンプルな記述で条件分岐した結果を返してくれる点だ。
一方で1つの条件式の判定までしか条件分岐できないので、複雑な場合分けが必要な場合は利用できない。
一方でIF文はこれまで見てきたようにTHENやENDなどの記述が必要になるが、ELSEIFを活用すれば、条件分岐の数に制限なく、複雑な場合分けにも対応することが出来る。
そのため、シンプルな1条件の判定はIIF関数を使い、複雑な場合分けの場合はIF文を使うのがおすすめだ。
IIF関数についてより詳しく知りたい場合は下記にまとめているので是非参考にして欲しい。