Excel2019の新関数 IFS() およびSWITCH()関数の解説記事です。
※最新版に更新されたExcel2016でも動きます。
IFS()、SWITCH()、どちらも、条件判断をし、条件に応じた結果を返す関数です。
IF関数でネスティングしていた処理を、スマートに書ける!
従来のIF関数でも、ネスティングすれば同じことはできるのですが、新関数におきかえることで、より分かりやすくすっきりとした数式を書くことができます。
Excel2019の方は、このまま記事を読んでお試しください。
Excel2016の方は、「Office365を契約してアップデートしている方」は使えます。「パソコンを買ったとき2016がついてきた」といった認識の方は、使えない可能性が高いです。
Excel2013以前の方は、この関数は使えません。
IFS()関数:IF関数のネスティングを、シンプルに1つの関数で実現
IF()関数が((()))かっこだらけにならなくてすむ!
IFS()関数は、次のような場合にとても便利な新関数です。
「得点が80点以上の生徒はA、
60点以上80点未満の生徒はB、
40点以上60点未満の生徒はC、
40点未満の生徒はDという評価をつける」
従来のIF関数
=IF(B2>=80,”A”,IF(B2>=60,”B”,IF(B2>=40,”C”,”D”)))
新しい IFS関数
=IFS(B2>=80,”A”,B2>=60,”B”,B2>=40,”C”,TRUE,”D”)
のように、より簡単な書き方ができるようになります。
条件を並べる順番に気を付けよう
IFS関数のルールは次のようなものです。
最後のTRUEが謎ですが、これは次の項目でお話しします。
最初の条件を満たしたらそこで評価は終わり。
満たさなかったら、次の条件を見に行くようになっています。
ですからこの場合、80、60、40の順に並んでいることが重要で、もし順番を逆にしたら、次のようになってしまいます。
とにかく40以上であれば「C」と表示して終わってしまっていますね。
いちばん最後(右側)の条件は必ず「TRUE」
さて、最後の謎の「TRUE」のお話をします。
計算結果がTRUEかFALSEになる「論理式」を知っていますか?
このTRUEとはいったい何か?という話のために、まずは
「論理式」とはなにか?
ということをお話ししたいと思います。
まずは
Excelで次の数式を入力してみてください。
結果がいくつになるか予想しながらお読みください。
- =1+1 →結果は…2
- =3*2 →結果は…6
- =8/2 →結果は…4
- =8>2 →結果は……???
最後の数式、見慣れない数式ですね。
こんな数式、計算できないよ! と思った方も、試しにEnterを押してみてください。
結果は…「TRUE」になります。
「8は2より大きいか?」という式で、実際に8は2より大きいですから「TRUE」(真)という結果になります。
このような数式を、「論理式」といいます。
その計算結果は「TRUE」または「FALSE」になります。
- =8>2 →結果は…8は2より大きいので TRUE(真)
- =8<2 →結果は…8は2より大きくないので FALSE(偽)
- =4=4 →結果は…4と4は等しいので TRUE(真)
ですから、IF関数の中に書いてある論理式も、
=IF(B2>=80,”A”,”B”) B2セルに96が入っていたら
→=IF( 96>=80 ,”A”,”B”)
→ =IF( TRUE ,”A”,”B”)
→結果 “A”
このように、計算されて「TRUE」になり、それからIF関数の処理が行われています。
「TRUE」と書けば「かならず成り立つ」
もし、最後の「条件4」が成り立たなかったら、N/Aというエラーが表示されてしまいます。
N/Aを防ぐために、最後の条件を「絶対成り立つ」=「TRUE」と書いて、他の条件が全部だめだったら「D」と必ず表示されるようにしているのです。
※TRUEと書く代わりに、「4=4」とか、「1=1」とか、絶対に成り立つ論理式を書いても、結果は同じになります。
※絶対にどれかの条件が成り立つような設計をすれば、最後のTRUEは必要ありません。
SWITCH()関数:IF関数・IFS関数が「=」だけの時は、SWITCHで書こう
SWITCH関数は、例えば次のように使う関数です。
C列にSWITCH関数を使用しています。
=SWITCH(B3,1,”特命係”,2,”刑事部”,3,”捜査一課”,4,”捜査二課”,5,”鑑識課”,6,”組織犯罪対策部”,9,”警察庁”,”民間人”)
SWITCH関数の書き方
=SWITCH( [式] , 値1 , 結果1, 値2 , 結果2, ……値n,結果n,どれにも該当しなかった時の結果)
[式]→条件分けの基準になるもの
[式]には、所属コード」が入っているセルの参照を入れました。
「式」ということですから、セル参照でも、数字でも、関数を使った計算式でも、文字列でも、なんでも入れられます。
値1だったときに結果1を返す、値2だったときに結果2を返す…
[式]の結果を算出して、それが[値1]だったとき、[結果1]を返す、 [値2]だったとき、[結果2]を返す、……どれにも当てはまらなかったら、最後の「どれにも該当しなかった時の結果」を返す、というしくみになっています。
IFS関数/CHOOSE関数との使い分け
CHOOSE関数、IF関数でも、同じ処理ができます。
SWITCH関数を使った場合
=SWITCH(B3,1,”特命係”,2,”刑事部”,3,”捜査一課”,4,”捜査二課”,5,”鑑識課”,6,”組織犯罪対策部”,9,”警察庁”,”民間人”)
CHOOSE関数を使った場合
=IF(B3=””,”民間人”,CHOOSE(B3″特命係”,”刑事部”,”捜査一課”,”捜査二課”,”鑑識課”,”組織犯罪対策部”,,,”警察庁”))
IFS関数を使った場合
=IFS(B3=1,”特命係”, B3=2,”刑事部”, B3=3,”捜査一課”, B3=4,”捜査二課”, B3=5,”鑑識課”, B3=6,”組織犯罪対策部”, B3=9,”警察庁”,TRUE,”民間人”)
CHOOSE関数は、SWITCH関数とよく似ていますね。
- 1,2,3という連番=「インデックス」を使うことで、選択肢を書かなくても順番に結果を割り当ててくれる
という利点がありますが、反面
- 番号が飛んだ場合は、とんだ分だけ「,」をいれなければならない。
- 「それ以外の場合」を表示するためには、IF関数と組み合わせなければならない
というデメリットがあります。SWITCH関数の方が便利で、CHOOSE関数の全機能を含んでいる、ということになりますので、今後はSWITCHが主流になるかもしれません。
IFS関数で書く場合は、すべての条件に「B3=〇」と書く必要があります。SWITCH関数の方がシンプルで分かりやすいですね。最後の「TRUE」も必要ありません。
VLOOKUP関数との使い分け
VLOOKUP関数を使うと次のように書き換えられます。
おそらく、このようにVLOOKUP関数を使う方法が最も広く使われていると思います。
「所属一覧」の項目数が非常に多い場合や、頻繁に変更されたり追加されたりする場合には、VLOOKUP関数の方が適しています。
SWITCH関数の条件式は、数式に埋め込まれていますので、変更する場合は関数の引数を直接変更し、表全体にオートフィルする必要があります。
条件が多ければ多いほど、関数の記述が長くなり、メンテナンス性は悪くなります。
IFS/SWITCH/CHOOSE/VLOOKUP使い分けのまとめ
Excelで条件によって結果を出しわけるとき、どの関数が適しているのか、という「使い分け」をまとめます。
- 「より大きい、小さい」「以上・以下」を含む条件で分岐するときは IFS関数が適しています。
- すべての条件が「=、等しい」のときは、SWITCH関数が適しています。
- 条件が1,2,3と連番の「インデックス」であり、かつ「どの条件もみたさない場合」を入れなくていい場合は、CHOOSE関数でも書くことができます。
- 条件が多かったり、変更が必要な時は、VLOOKUP関数などが適しています。
MOS2019試験では、どれで書いても正解になるか?
本日時点ではまだ「来るべき新バージョン」試験である、MOS2019の試験に、両関数が出るということが英語版で公表されています。
いままでの記事から分かる通り、
SWITCH関数で書けるものは、すべてIFS関数でも書くことができる
(カッコを大量につければIF関数でも書くことができる)
SWITCHを使える場面の一部で、CHOOSE関数も使える
わけなのですが、
どれで書いても正解になるでしょうか?
問題文を正確に読めば、何が正解かは必ず分かるはず
MOS2019の問題文がどうなるかは、実際に日本で試験が開始され、受験しないと分からないわけですが、
まず、CHOOSE関数は、試験範囲として明示されていませんので、CHOOSEが正解にならないような出題になると思われます。
IFS関数、SWITCH関数の使い分けは、これはどうなるか、見てみないと分からないなあ…というのが正直な感想です。もしかしたら「どちらでも正しく書けていれば正解」がありうるかもしれません。
SWITCH関数しか正解にならないと思われる問題文の例
- 関数をひとつだけ使って、所属コードごとに所属名が表示されるようにします。
「ひとつだけ」ということは、IF関数とネストしてはだめ、ということですから、「番号がない場合」を考えるとCHOOSE関数は使えないことになります。残ったIFS関数、SWITCH関数、どちらで書いても、この問題文であれば正解となるでしょう。
- 関数をひとつだけ使って、所属コードごとに所属名が表示されるようにします。ただし、IF関数、IFS関数は使わないものとします。
SWITCH関数のみを正解にするとしたら、このように書くしかないのでは……?という気が今のところしています。
というわけで、しっかりとこの2つの関数の使い分け、身につけておきましょう!
コメント
立て続けの投稿にもかかわらず、
ご解答して頂きありがとうございました。
お時間を取らせてしまいもうしわけありませんでした。
連続のコメントにご解答して頂き、ありがとうございました。
お忙しいところ、お時間をとらせてしまい申し訳ありませんでした。
立て続けの投稿をお許しください。
今回のコラムを拝見させて頂き、いままでわかっていたつもりだったのが、
よくわかっていなかったことが発見できました。
>すべての条件が「=、等しい」のときは、SWITCH関数が適しています。
ですが、目から鱗でした。
わかったつもりでIFS関数の乱用をしていましたが、すべての条件が「=、等しい」のときは、SWITCH関数が使いやすいです。
また、すべての条件が「=、等しい」のときは条件の順番もきにしなくてもいいのですね。
>条件が多かったり、変更が必要な時は、VLOOKUP関数などが適しています。
ですが、
参照先に計算式を入れる方法はあるのでしょうか。
例えばですが
税の計算表で使用する場合なのです。
価格を入力し、「課税」をプルダウンで選択したら10%で計算、「軽減税率」をプルダウンで選択したら8%で計算するという場合、
IFS関数で条件分けで関数を入れ込む方法で作成をしていますが、
これをvlookup関数などの参照関数で作成はできるのでしょうか。
コラムでおっしゃられてた通り、IF関数などはメンテナンスが大変ですが、vlookupなどはメンテナンスが用意なので
計算式を入れ上手く参照関数でできないかと試行錯誤しましたが、できませんでした、、、。
ギブアップしました。
立て続けの投稿で恐縮ですが、どうぞご容赦下さいませ。
「課税」10%「軽減税率」8% をVLOOKUP関数で書くのでしたら
E1:F3の範囲の次のように表を用意して
税区分 税率
課税 10%
軽減税率 8%
例えばA2セルに税区分をプルダウンで選択するならば
=VLOOKUP(A2,$E$1:$F$3,2,FALSE)
とすれば、税率が切替できますね。