これまでに紹介してきたIFやIFS、CHOOSEのほかにも、Excelには条件分岐を行える関数が用意されている。ということで、今回は「関数SWITCH」の使い方を紹介していこう。同様の処理を関数IFSで実現することも可能であるが、状況によってはSWITCHの方が便利なケースもある。ぜひ、使い方を覚えておこう。

関数SWITCHを使ったデータの取得

セルの値に応じて条件分岐を行う際に「関数SWITCH」を使用する方法もある。ということで、今回は関数SWITCHの使い方を紹介していこう。この関数も「複数の条件分岐」に対応している。

  • IFSの代わりに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回の連載を参照)。また、いずれの値にも一致しなかったっ場合の処理(既定の処理)は記述を省略している。

  • 関数SWITCHの入力

「Enter」キーを押して関数の入力を確定すると、以下の図のような結果が得られた。今回は、D13セルに"MNレンタル"が選択されているので、「D5」セルの値がそのまま取得されることになる。

  • 関数SWITCHの処理結果

あとは、この関数をオートフィルでコピーするだけだ。これで全アイテムの「単価」を自動取得できるようになる。

  • 関数SWITCHをオートフィルでコピーした様子

念のため、ショップ選択を変更した例も紹介しておこう。たとえば、ショップ選択を"Eveアシスト"に変更すると、E5~E11セルの値が「単価」として自動取得され、それに応じて「金額」と「小計」が再計算される。

  • ショップ選択を変更した様子(1)

同様に、ショップ選択を"Rent-S"に変更すると、F5~F11セルの値が「単価」として自動取得され、それに応じて「金額」と「小計」が再計算される。

  • ショップ選択を変更した様子(2)

このように「値」に応じて処理を分岐できる関数がSWITCHとなる。

同様の処理を関数IFSや関数CHOOSEで実現することも可能であるが、関数IFSの場合は「$D$13="MNレンタル"」のように条件を式(比較演算子)で指定する必要があり、引数の記述(文字数)が多くなってしまう。関数CHOOSEの場合は、それぞれの値をインデックス番号(1、2、3、・・・)に変換する手間が必要となり、処理が1ステップ増えてしまう。

このように考えると、今回の例を「条件分岐の関数」で処理するのであれば、SWITCHが最も手軽な関数といえる。

各条件の「値」をセル参照で指定

今回の例では、"MNレンタル"や"Eveアシスト"などのショップ名が「D4」~「G4」のセルに入力されている。よって、以下の図のように、関数SWITCHの「値」をセル参照で指定しても構わない。

  • 「ショップ名」をセル参照で指定した場合

この場合は、後ほど関数をコピーしたときにセル参照が変化しないように、「値」の部分も絶対参照で指定しておく必要がある。いちいち「$」を入力するのが面倒なときは、「D4」と入力した後に「F4」キーを押してもよい。すると、「D4」→「$D$4」にように、相対参照を絶対参照に変換することができる。

あとは、この関数をオートフィルでコピーするだけ。このような記述方法でも、先ほどど同じ結果を得ることが可能だ。

  • 関数SWITCHをオートフィルでコピーした様子

  • ショップ選択を変更した様子

スピルを活用してセル範囲を取得

Excel 2021やMicrosoft 365を使用している場合は、スピルを使って「セル範囲」をまとめて取得してもよい。この場合は関数をコピーしなくても済むため、セル参照をすべて相対参照で記述しても特に問題は生じない。

※D18~D23は空白セルにしておく。

  • 関数SWITCHでセル範囲を取得する場合

「Enter」キーを押して関数SWITCHの入力を確定すると、D13セルの値に応じた「セル範囲」が自動取得される。以下の図では、D13セルに"CxRent"(G4)が選択されているので、「G5:G11」のセル範囲が自動取得されることになる。

  • 関数SWITCHの処理結果

ショップ選択を変更したい例も紹介しておこう。たとえば、"Eveアシスト"を選択すると「E5:E11」のセル範囲が取得され、それに応じて「金額」と「小計」が再計算される。

  • ショップ選択を変更した様子

関数SWITCHで計算方法を条件分岐させる

関数SWITCHを使って計算方法を分岐させることも可能だ。続いては、「会員ランク」に応じて割引率を以下のように変化させる例を紹介しておこう。

・"S"ランクの場合は「15%」の割引(合計金額×0.85)
・"A"ランクの場合は「10%」の割引(合計金額×0.90)
・"B"ランクの場合は「5%」の割引(合計金額×0.95)
・"C"ランクの場合は「3%」の割引(合計金額×0.97)
・それ以外の場合は「割引なし」(合計金額をそのまま取得)

この処理を関数SWITCHで記述すると、以下の図のようになる。今回は、最後の引数として、いずれの値にも一致しなかった場合の処理(既定の処理)を指定している。

  • 関数SWITCHの入力

「Enter」キーを押して関数SWITCHの入力を確定すると、以下の図のような結果が得られた。この例では「会員ランク」が"A"なので、10%割引した金額が自動計算されることになる。

  • 関数SWITCHの処理結果

あとは関数SWITCHをオートフィルでコピーするだけ。これで、すべての「割引後」の料金を自動計算できる。

  • 関数SWITCHをオートフィルでコピーした様子

スピルを活用して「検索値」を変化させる

上記の例のように、条件の対象となるセルがC3、C4、C5、・・・のように変化していく場合でもスピルを活用することが可能だ。この場合は、第1引数に「セル範囲」を指定してあげればよい。また、それに合わせて「割引後」の金額を計算する部分も「合計金額」のセル範囲を指定しておく必要がある。

※E4~E17は空白セルにしておく。

  • 関数SWITCHの入力

  • 関数SWITCHの処理結果

この方法でも先ほどと同じ結果を得ることが可能だ。最初はスピルの使い方に戸惑うかもしれないが、今後、スピルはExcelの主要な機能のひとつになっていくと思われる。Excelを効率よく使えるように、時間があるときにスピルの使い方を研究しておくとよいだろう。