IFS()関数・SWITCH()関数~MOS2019試験に出るシリーズ

IFS関数・SWITCH関数 道路の分岐標識 Excel(エクセル)
Excel(エクセル)MOS資格対策
スポンサーリンク/Sponsored Link

Excel2019の新関数 IFS() およびSWITCH()関数の解説記事です。
※最新版に更新されたExcel2016でも動きます。

IFS()、SWITCH()、どちらも、条件判断をし、条件に応じた結果を返す関数です。

IF関数でネスティングしていた処理を、スマートに書ける!

従来のIF関数でも、ネスティングすれば同じことはできるのですが、新関数におきかえることで、より分かりやすくすっきりとした数式を書くことができます。

Excel2019の方は、このまま記事を読んでお試しください。
Excel2016の方は、「Office365を契約してアップデートしている方」は使えます。「パソコンを買ったとき2016がついてきた」といった認識の方は、使えない可能性が高いです。
Excel2013以前の方は、この関数は使えません。

スポンサーリンク/Sponsored Link

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(B2>=80,"A",B2>=60,"B",B2>=40,"C",TRUE,"D")

のように、より簡単な書き方ができるようになります。

条件を並べる順番に気を付けよう

IFS関数のルールは次のようなものです。

IFS(条件1,結果1,→満たさない→条件2,結果2

最後のTRUEが謎ですが、これは次の項目でお話しします。

最初の条件を満たしたらそこで評価は終わり。
満たさなかったら、次の条件を見に行くようになっています。
ですからこの場合、80、60、40の順に並んでいることが重要で、もし順番を逆にしたら、次のようになってしまいます。

IFS関数の中の条件を逆にしてみたところ。40以上がC、40未満はDだけになってしまった。
IFS関数の条件式の順番を逆にすると、
40以上がC、40未満はD、という2種類だけに
なってしまった。

とにかく40以上であれば「C」と表示して終わってしまっていますね。

いちばん最後(右側)の条件は必ず「TRUE」

さて、最後の謎の「TRUE」のお話をします。

IFS(条件1,結果1,→満たさない→条件2,結果2・・・最後にTRUE,"D")
いちばん最後の条件が「TRUE」ってどういうこと?

計算結果がTRUEかFALSEになる「論理式」を知っていますか?

このTRUEとはいったい何か?という話のために、まずは
「論理式」とはなにか?
ということをお話ししたいと思います。

まずは
Excelで次の数式を入力してみてください。
結果がいくつになるか予想しながらお読みください。

  1. =1+1 →結果は…2
  2. =3*2 →結果は…6
  3. =8/2 →結果は…4
  4. =8>2 →結果は……???

最後の数式、見慣れない数式ですね。
こんな数式、計算できないよ! と思った方も、試しにEnterを押してみてください。

=8>2

結果は…「TRUE」になります。

TRUE

「8は2より大きいか?」という式で、実際に8は2より大きいですから「TRUE」(真)という結果になります。

このような数式を、「論理式」といいます。
その計算結果は「TRUE」または「FALSE」になります。

  1. =8>2 →結果は…8は2より大きいので TRUE(真)
  2. =8<2 →結果は…8は2より大きくないので FALSE(偽)
  3. =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は必要ありません。

スポンサーリンク/Sponsored Link

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関数で作成した例。

おそらく、このようにVLOOKUP関数を使う方法が最も広く使われていると思います。

「所属一覧」の項目数が非常に多い場合や、頻繁に変更されたり追加されたりする場合には、VLOOKUP関数の方が適しています。

SWITCH関数の条件式は、数式に埋め込まれていますので、変更する場合は関数の引数を直接変更し、表全体にオートフィルする必要があります。

条件が多ければ多いほど、関数の記述が長くなり、メンテナンス性は悪くなります。

スポンサーリンク/Sponsored Link

IFS/SWITCH/CHOOSE/VLOOKUP使い分けのまとめ

Excelで条件によって結果を出しわけるとき、どの関数が適しているのか、という「使い分け」をまとめます。

  • 「より大きい、小さい」「以上・以下」を含む条件で分岐するときは IFS関数が適しています。
  • すべての条件が「=、等しい」のときは、SWITCH関数が適しています。
  • 条件が1,2,3と連番の「インデックス」であり、かつ「どの条件もみたさない場合」を入れなくていい場合は、CHOOSE関数でも書くことができます。
  • 条件が多かったり、変更が必要な時は、VLOOKUP関数などが適しています。

スポンサーリンク/Sponsored Link

MOS2019試験では、どれで書いても正解になるか?

本日時点ではまだ「来るべき新バージョン」試験である、MOS2019の試験に、両関数が出るということが英語版で公表されています。

いままでの記事から分かる通り、

SWITCH関数で書けるものは、すべてIFS関数でも書くことができる
(カッコを大量につければIF関数でも書くことができる)
SWITCHを使える場面の一部で、CHOOSE関数も使える

わけなのですが、

どれで書いても正解になるでしょうか?

問題文を正確に読めば、何が正解かは必ず分かるはず

MOS2019の問題文がどうなるかは、実際に日本で試験が開始され、受験しないと分からないわけですが、

まず、CHOOSE関数は、試験範囲として明示されていませんので、CHOOSEが正解にならないような出題になると思われます。

IFS関数、SWITCH関数の使い分けは、これはどうなるか、見てみないと分からないなあ…というのが正直な感想です。もしかしたら「どちらでも正しく書けていれば正解」がありうるかもしれません。

氏名・所属コード・所属名の一覧表

SWITCH関数しか正解にならないと思われる問題文の例

  • 関数をひとつだけ使って、所属コードごとに所属名が表示されるようにします。

「ひとつだけ」ということは、IF関数とネストしてはだめ、ということですから、「番号がない場合」を考えるとCHOOSE関数は使えないことになります。残ったIFS関数、SWITCH関数、どちらで書いても、この問題文であれば正解となるでしょう。

  • 関数をひとつだけ使って、所属コードごとに所属名が表示されるようにします。ただし、IF関数、IFS関数は使わないものとします。

SWITCH関数のみを正解にするとしたら、このように書くしかないのでは……?という気が今のところしています。

というわけで、しっかりとこの2つの関数の使い分け、身につけておきましょう!

パソコン教室・キュリオステーション志木店からのお知らせ
レッスンはオンラインで受講できます

パソコン教室・キュリオステーション志木店では、本年よりオンラインでの在宅レッスンを実施しております。
教室の全コースがオンラインで受講可能。実際にインストラクターがご対応いたします。
1時間の無料体験レッスンはいつでも予約できます。詳しくは公式ページをご覧ください。

スポンサーリンク/Sponsored Link
キュリオステーション志木店運営をフォローする

コメント

  1. サンタロウ より:

    立て続けの投稿にもかかわらず、

    ご解答して頂きありがとうございました。

    お時間を取らせてしまいもうしわけありませんでした。

  2. サンタロウ より:

    連続のコメントにご解答して頂き、ありがとうございました。

    お忙しいところ、お時間をとらせてしまい申し訳ありませんでした。

  3. サンタロウ より:

    立て続けの投稿をお許しください。

    今回のコラムを拝見させて頂き、いままでわかっていたつもりだったのが、
    よくわかっていなかったことが発見できました。
    >すべての条件が「=、等しい」のときは、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)
      とすれば、税率が切替できますね。

タイトルとURLをコピーしました