これまでに紹介してきたIFやIFS、CHOOSEのほかにも、Excelには条件分岐を行える関数が用意されている。ということで、今回は「関数SWITCH」の使い方を紹介していこう。同様の処理を関数IFSで実現することも可能であるが、状況によってはSWITCHの方が便利なケースもある。ぜひ、使い方を覚えておこう。
関数SWITCHを使ったデータの取得
セルの値に応じて条件分岐を行う際に「関数SWITCH」を使用する方法もある。ということで、今回は関数SWITCHの使い方を紹介していこう。この関数も「複数の条件分岐」に対応している。
これまで本連載では、IFやIFS、CHOOSEといった関数の使い方を紹介してきた。手短にまとめると、関数IFSは「条件式」(比較演算子)、関数CHOOSEは「インデックス番号」(1、2、3、・・・)により処理を分岐させる関数となる。一方、今回紹介する関数SWITCHは「値」により処理を分岐させる関数となる。
◆関数SWITCHの書式
=SWITCH(検索値, 値1, 処理1, 値2, 処理2, 値3, 処理3, ・・・, 既定の処理)
「検索値」の部分にはセル参照を指定するのが一般的だ。そして、その値が「値1」の場合は「処理1」、「値2」の場合は「処理2」、「値3」の場合は「処理3」、・・・という具合に処理を分岐させていく仕組みになっている。さらに、いずれの値にも一致しなかった場合の処理を「既定の処理」として指定することも可能である(省略可)。
前回と同じ例を使って具体的な使い方を紹介していこう。以下の図は、あるイベントの開催に必要な備品のレンタル&作成料金を調べたものだ。今回は4つのショップについて料金(単価)を調査した。
下の表は、調査結果をもとに必要な金額を計算する表だ。D13セルでショップを選択すると、そのショップの料金が「単価」に自動入力され、それぞれの「金額」と「小計」が計算される、という仕組みを関数SWITCHで作成してみよう。
まずは「テント」のレンタル料金を関数SWITCHで自動取得してみよう。今回はD13セルの値に応じて処理を分岐させるので、第1引数となる「検索値」にはD13セルを指定すればよい。後ほど関数をコピーしたときにセル参照が変化しないように、ここでは絶対参照でD13セルを指定した。
続いて、それぞれの「値」と「処理」を順番に記述していく。今回の例では、ショップ選択に応じて、以下のセルを参照するように指定すればよい。
・"MNレンタル"の場合は「D5」セル
・"Eveアシスト"の場合は「E5」セル
・"Rent-S"の場合は「F5」セル
・"CxRent"の場合は「G5」セル
よって、関数SWITCHの記述は以下の図のようになる。なお、記述が見やすくなるように、「Alt」+「Enter」で改行しながら関数を記述している(詳しくは第51回の連載を参照)。また、いずれの値にも一致しなかったっ場合の処理(既定の処理)は記述を省略している。
「Enter」キーを押して関数の入力を確定すると、以下の図のような結果が得られた。今回は、D13セルに"MNレンタル"が選択されているので、「D5」セルの値がそのまま取得されることになる。
あとは、この関数をオートフィルでコピーするだけだ。これで全アイテムの「単価」を自動取得できるようになる。
念のため、ショップ選択を変更した例も紹介しておこう。たとえば、ショップ選択を"Eveアシスト"に変更すると、E5~E11セルの値が「単価」として自動取得され、それに応じて「金額」と「小計」が再計算される。
同様に、ショップ選択を"Rent-S"に変更すると、F5~F11セルの値が「単価」として自動取得され、それに応じて「金額」と「小計」が再計算される。
このように「値」に応じて処理を分岐できる関数がSWITCHとなる。
同様の処理を関数IFSや関数CHOOSEで実現することも可能であるが、関数IFSの場合は「$D$13="MNレンタル"」のように条件を式(比較演算子)で指定する必要があり、引数の記述(文字数)が多くなってしまう。関数CHOOSEの場合は、それぞれの値をインデックス番号(1、2、3、・・・)に変換する手間が必要となり、処理が1ステップ増えてしまう。
このように考えると、今回の例を「条件分岐の関数」で処理するのであれば、SWITCHが最も手軽な関数といえる。