追記:2017年7月1日、より簡単な関数:IFSを追記。
関数:IFの新しい使い方を知ったので紹介します。
関数IFにおいてネスト(入れ子)を回避することができるようです。
そもそもネスト(入れ子)とは
=IF(A1=1,1,(IF(A1=2,2,IF(A1=3,3,IF(A1=4,4,10))))))っていう状態の事を指します。
図にすると関数IFだけで下図のような条件分岐をさせたい場合にネスト(入れ子)が発生してしまします。
ネストを多用するとかなり間違えがちなので(あと、考えるのが面倒)、対策を考えました。ただし、別表は作成したくないのでVLOOKUPを使わないという条件です。
例がこんな感じです。
数式IFの間を「&」で繋ぐことでネスト回避ができるようです。
比較してみた。
ネストする場合:
IF(D8=300,0.82,IF(D8=350,0.76,IF(D8=400,0.73,IF(D8>400,0.72,""))))
ネストしない場合:
IF(D8=300,0.82,"")&IF(D8=350,0.96,"")&IF(D8=400,0.73,"")&IF(D8>400,0.72,"")
正確性とすっきり感が圧倒的に差が出る結果となりました。
追記(2017/07/01)
追記です。関数IFSを知ったので書いておきます。IFSのほうがよりカンタンです。
IFSとは
IFと基本的な機能は同じですがネスト回避がしやすい式の構成となっています。
IFは一つの条件に対し、TRUEの場合とFALSEの場合を設定しますが、IFSは複数条件を設定するのが前提でその条件がTRUEの場合を設定するという違いがあります。
=IFS(第一条件,第一条件がTRUEの場合の処理,第二条件,第二条件がTRUEの場合の処理,第三条件,第三条件がTRUEの場合の処理,第四条件,第四条件がTRUEの場合の処理,…第127条件まで)
具体例
FG行に =IFS(D8=300,0.82,D8=350,0.96,D8=400,0.73,D8>400,0.72) という式を入力しています。
すると対象条件に応じた入力結果となります。
▼Microsoftのページです。
注意点
IFSはExcel2016からしか使うことができません。2013以前では使うことができないようです。
しかし、2013でIFSを使いたい人向けにマクロで関数を定義している記事がありました。
https://www.excelspeedup.com/ifs/
まとめ
比較するとIFSを使うと式が最も短くなるのでやはりIFSの方が使い勝手が良さそうです。
①IFでネストする場合:
IF(D8=300,0.82,IF(D8=350,0.76,IF(D8=400,0.73,IF(D8>400,0.72,""))))
②IFでネストしない場合:
IF(D8=300,0.82,"")&IF(D8=350,0.96,"")&IF(D8=400,0.73,"")&IF(D8>400,0.72,"")
③IFSでネストしない場合:
IFS(D8=300,0.82,D8=350,0.96,D8=400,0.73,D8>400,0.72)
▼かなりの良書です。累計部数17万部という激売れしている商品です。初心者から上級者まで幅広く楽しめる一冊です。