スプシ|IFS|IFのネストをやめてIFSやSWITCHを
複数分岐を作りたいときは、IFをネストさせるのではなく、IFS(またはSWITCH)を使いましょう。また、条件はセルを参照させます。
00|IFSとSWITCHの実際の動作【動画】
まずは実際の動きをみていただいて、「これだ!」と思ったら続きをどうぞ。
01|IFのネストとは?なぜダメなのか?
まず、IFの構文はこちら。
IF(論理式, TRUE値, FALSE値)
例えば、=IF(A1=1,"りんご","バナナ")だと、A1が1ならりんご、それ以外ならバナナを返す、という形式ですね。
では、ネストとはどういうことか?
上記にA1=2のときはみかんを返す条件を増やすとしましょう。その時は、FALSE部分をまたIFにして、以下の様に記述します。
=IF(A1=1,"りんご",IF(A1=2,"みかん","バナナ"))
一気に見にくくなりました(笑)このように、IFの中にIFを入れて条件分岐を増やすことをIFのネストといいます。
条件がシンプルで戻り値が少ないうちはまだ可愛いものなのですが、条件が複雑で戻り値の数が増えると問題です。
カッコが足りないはずなんだけれど、どこが足りないか分からなかったり、関数の式が折り返して見にくくなったり、とにかく煩雑です。
02|IFSとSWITCHならネストは不要
そうは言っても、たくさん条件分岐させたいんだ、という方。ちゃんと別の関数が用意されていますのでこちらを使ってください。ここではIFSとSWITCHをご紹介します。
▷IFSの場合
IFSの構文はこちらです。
IFS(条件1, 値1, [条件2, …], [値2, …])
さきほどの例で当てはめてみると、以下のようになります。
=IFS(A1=1,"りんご",A1=2,"みかん")
あれ?バナナは?と思った方。そう、IFSはFALSEのときの指定が出来ないんですよね。なので、いずれの条件にも当てはまらない場合にはエラー値(#N/A )になります。エラー値を返すことにより、表が正しくできたかチェックできる、という面もありますが、嬉しくない場合もあります。
エラー値を避けたい場合、①条件で何とかする②IFERRORで囲ってエラーの場合に返す値を指定するのどちらかで対応してください。
①条件で何とかする
=ifs(A1=1,"りんご",A1=2,"みかん",A1<>OR(1,2),"バナナ")
②IFERRORで囲う
=IFERROR(IFS(A1=1,"りんご",A1=2,"みかん"),"バナナ")
これだとやっぱり分かりにくくなるな、という方、以下のSWITCHであれば、エラー時には任意の値を返すことができます。
▷SWITCHの場合
SWITCHの構文はこちらです。
SWITCH(式, ケース1, 値1, [ケース2または既定値, …], [値2, …])
事例に当てはめると、こうです。
=SWITCH(A1,1,"りんご",2,"みかん","バナナ")
とても見やすくなりましたね。ちなみに任意値を指定しなければやはりエラー値(#N/A )になります。
IFSとSWITCHは、条件式をどうするかなどで使い分けが必要なので、どちらも使えるようにしておくといいでしょう。
03|引数と戻り値を一覧表にして参照させると、簡単に修正できる
さて、上記のように数式内に引数や戻り値を直接記述してもいいのですが、それら自身に修正があったときに対応が面倒になります。
例えばA=2のときは、やっぱりぶどうにしたい、となると数式内の”みかん”を”ぶどう”に変更していかなければならず、ミスの原因になります。
引数と戻り値を一覧表にしておけば、修正があった場合でも対応可能なので、知っておいて損はないでしょう。詳しくは下の動画で紹介しています。
ちなみに一覧表にしておけば、今回の事例であればVLOOKUPでも同じことが出来ますね(動画参照)。
おわりに
スプレッドシートで関数を駆使してあれこれ作るときは、あとから誰かが修正できる状態にしておくこと(=シンプルに読める形)が基本です。自己満足に陥らないようにしたいですね。
この記事が気に入ったらサポートをしてみませんか?