Excel の SWITCH 関数
Excel の関数は、バージョンが上がるたびに新たなものが追加されています。
その中で、Excel 2016 のサブスクリプション版(Microsoft 365)で新しく追加された関数の中に SWITCH 関数 があります。
名前が同じため混同しやすいのですが、VBA・Access の Switch 関数 とは別物です。注意しましょう。
実のところ、このような条件分岐関数は Excel 2016 以降急に実装されてきたんですよね。
たとえば、VBA・Access の Switch 関数 に非常に似た挙動を示す IFS 関数 も、Excel 2016 のサブスクリプション版からの実装ですし。
これらの関数が使えない場合、複雑な IF 関数 の入れ子になることも珍しくなかったでしょう。
複雑にネストされた IF 関数 なんて正直読みたくない・後からの解読にも大変苦労しますし、このような条件分岐関数が充実してきたのは非常に助かります。
SWITCH 関数の使い方
使い方は上記の公式サポートにありますが、そこから引用すると以下のようになります。
=SWITCH(交換する値, 一致する値1...[2-126], 一致する値1...[2-126] がある場合に返す値, 一致する値がない場合に返す値)
もう少し日本語的に書き直すと、
=SWITCH(値X, 値XがAだったとき, この値を返す, 値XがBだったとき, この結果を返す, (以下繰り返す), いずれにも一致しない場合はこの値を返す- 省略可能)
こうなります。
ちなみに、最後の引数(上記の例で「省略可能」と書いた部分)が省略され、かつ、一致する項目がない場合は、#N/A エラーが返ります。意図的にエラーを返すつもりがなければ、この引数は指定しておきましょう。
実際の挙動は以下のようになります。
A1 セルの値が 1 なので、それに対応する「岩手県」が返されています。
これを IF 関数 で実装するとなると非常に深いネストが必要になりますよね。
それが一切不要になるのは非常に便利です。
VLOOKUP 関数で、SWITCH 関数の代用品を作る
このように便利な SWITCH 関数ですが、この関数は Microsoft 365 が未契約の場合は Excel 2019 以降で初めて使用できる関数です。
(Microsoft 365 の契約がある場合は常に最新のバージョンが提供されるため、その場合も当然使用可能です。)
会社・学校など所属組織が、もしくは自分で Microsoft 365 を契約しているか、Office 2019 を使用していればよいのですが、そうではない人、特に、会社など所属組織の都合で Excel 2019 未満(執筆時点でサポート対象なのは、Excel 2013・Excel 2016)を使わされている人は少なくないと思います。
なので、Excel 2013・Excel 2016 でも使用可能な SWITCH 関数の代用品を作ってみましょう。
まずは実例を示します。
ヘルプにも一切記載がないものの、VLOOKUP 関数 にはこのような使い方もあります。
この記述において肝になるのは第2引数の記述方法です。
VLOOKUP 関数 の第二引数は、通常はセル範囲、すなわち値を検索する範囲を指定しますが、次のような記述方法で検索値(ルックアップ値)とそれに対応する値のリストを直接指定してしまうことも可能です。
{値1,対応する値1;値2,対応する値2;値3,対応する値3;値4,対応する値4;‥以下繰り返し}
このリストを第二引数に設定し、列番号(第三引数)を 2 に設定します。
第四引数は、完全一致した値を検索するため必ず FALSE を設定しましょう。
これにより作成したリスト内に値がなかった場合は #N/A が返るため、これを適当な値に変換するために IFNA 関数 で #N/A が返ったときの値を指定しておけば、SWITCH 関数の代わりが務まります。
会社等の制約で最新の Office を使わせてもらえない場合、あるいは、Excel 2019 未満の環境を想定しなければならない場合にはこの方法が非常に有用となることでしょう。