Sisenseナレッジ - INSIGHT LAB

【Sisense Formula】IF関数を使って条件分岐する

作成者: Turtle|2020年10月16日

こんにちは。Turtleです。
みなさんは、音楽を聴いた方が集中できるタイプですか?この質問に対するぼくの答えは、ずるいけど「場合による」。
「読む」という行為に関しては音楽を聴くと全く駄目なのだが、「手を動かす」(「書く」など)ときは音楽を聴きながらの方が集中できる。

どこかでクラシック音楽を聴きながら勉強すると良いみたいな情報を目にしたことがあるけど本当なのかなあ...

ちなみにぼくはクラシック音楽は性に合わない。アップテンポな音楽に合わせて身を揺らし、鼻歌を歌いながら作業するのがTurtle流のやり方。(家でしかできないんだけどね)

もちろんこの記事もそうやって書いている。

...さて、話は変わりますが、今回はIF関数の紹介です。
使用するデータのダウンロードはこちらから。

1. IF関数を使ってNULLに値を表示する

まずは今回使うデータの確認。ピポットで
行:「[顧客No.]」 値:「[Total 購入金額]」を指定する。


出来上がったテーブルをよく見ると、購入金額のところに値が入っていない(値がNULLの)顧客がいることが確認できる。

今回は、IF関数を使って、値がNULLのところに "0" と表示していく。

早速、IF関数の使い方を見てみよう。
先程のテーブルから 値→追加→数式エディタでIFの説明欄を表示する。


説明欄にあるように、IF関数は以下のような使い方をする。

IF(<条件>,<数式1>,<数式2>)

使い方は非常にシンプル。IF関数を使えば、
<条件>を満たせば(TRUEならば) <数式1> そうでなければ <数式2> というように結果を表示することができる。

では、さっそく使ってみよう。
先程も触れたが、今回は 購入金額が NULLのところに "0" と表示したい。条件式のパターンは複数考えられるが、今回は2つのパターンを紹介する。

①購入金額に値が入っているとき → そのまま購入金額を表示(そうでなければ "0" と表示 )
➁購入金額がNULLのとき→ "0" と表示(そうでなければ 購入金額 を表示)

1-1. 条件付け①:購入金額に値が入っているとき

それでは、
購入金額に値が入っているとき → そのまま購入金額を表示(そうでなければ 0 と表示 ) という条件式をつくってみよう。

数式に IF([Total 購入金額]>0, [Total 購入金額],0) と入力しOKを押す。

「購入金額に値が入っているとき」はここでは[Total 購入金額] > 0 としている。

以下のように、NULLだったところに "0" と表示することができた!

1-2. 条件付け➁:購入金額がNULLのとき

次に、2つ目のパターンを紹介する。
先程は [Total 購入金額] > 0 (= 購入金額に値が入っているとき)と条件付けた。

では、もっとストレートに 購入金額がNULLのとき と条件付けするときはどうするのか。ここで活躍するのが ISNULL関数である。

IF関数のときと同じように、値→追加→数式エディタでISNULLの説明欄を表示する。

ISNULL関数は以下のような使い方をする。

ISNULL(<数値>)
※条件文を記述する際の条件として使用

この関数を使用して、「購入金額がNULLのとき」という条件付けを行う。

数式に IF(ISNULL([Total 購入金額]),0,[Total 購入金額])と入力してOKを押そう。

ここでは、ISNULL([Total 購入金額]) とすることで、「 [Total 購入金額] が NULLのとき」という条件付けをしている。

以下のように、購入金額がNULLのところに "0" と表示することが出来た!

ちなみに、下線部の式を見てわかるように、
「購入金額がNULLのとき」は、そのまま 購入金額 = NULL でもいけるようだ。

これには結構驚いた。だって、これまでずっと
<項目名 IS NULL>と叩き込んできたんだから!
<項目名 = NULL> はダメだって聞いてきたんだから!
(...ちなみに、ISはただの文字列として認識されて使えなかった)

2. 購入金額に応じてポイントを算出する

さて、これまでIF関数を使って
購入金額がNULLの場合に "0" と表示する方法について解説してきた。

今度はちょっと違うパターンでIF関数を使っていく。

例えば、購入金額に応じてポイントを付与するとする。
購入金額が5000円以上の場合は購入金額の5%、5000円未満の場合は3%
したときのポイント値を IF関数を使って表示してみよう。
実際に数式を自分で考えてみてね。

...簡単でしたよね。すいません。正解はこちら!

IF([Total 購入金額]>= 5000,[Total 購入金額]*0.05, [Total 購入金額]*0.03)

値は以下のようになるはず。

では少し難易度を上げて。

先程と同じように購入金額に応じてポイントを付与するとする。
5000円以上は5%、3000円以上は3%、3000円未満は2%とするとき、
数式はいったいどうなるだろうか?(もちろんIF関数を使って)

...どうでしょう。

今回は今まで紹介したパターンのように、
条件に当てはまればA、そうでなければB のような2つに分けるだけでは足りない。

実は次回紹介するCASE関数を使えば簡単に数式をつくることができるのだけど、IF関数は少々面倒くさい書き方をしなくてはならない。

正解の数式と値はこちら。

IF([Total 購入金額]>=5000, [Total 購入金額]*0.05,
IF([Total 購入金額]>=3000, [Total 購入金額]*0.03, [Total 購入金額]*0.02))

ちょっと分かりにくいので解説する。
おさらいだけど、IF関数は IF(<条件>,<数式1>,<数式2>) という使い方をする。
<条件>に当てはまれば<数式1>、そうでなければ<数式2>と進むわけだ。

これを踏まえて正解の数式を見てみるとわかりやすくなる。
試しに<条件>、<数式1>、<数式2>に分けて見てみよう。

・<条件> [Total 購入金額]>=5000
・<数式1> [Total 購入金額]*0.05
<数式2> IF([Total 購入金額]>=3000, [Total 購入金額]*0.03, [Total 購入金額]*0.02)

これを見ると正解の数式の意味がだいぶクリアになったのではないだろうか。
ちなみに図示するとこんな感じ。

このように、IF関数の中にIF関数を入れてさらに分岐させることが出来る。
(個人的にあまり使うことはないと思っているのだけど)

3.まとめ

今回は、IF関数を使用した条件文について解説した。また、その中でISNULL関数についても触れることが出来た。

IF(<条件>,<数式1>,<数式2>)

ISNULL(<数値>)
※条件文を記述する際の条件として使用

構造はすごくシンプルなのでいろいろ試してみてほしい。

さっき個人的にあまり使うことはないと思っているとか言ったけど、実はこれを使いこなせるようになれば幅が広がるだろう、と最近注目していたりする。(エラーになってしまうことが多くて悩んでいるのだけどね)

次回はCASE関数を使用した条件文について解説したいと思う。

それでは。