「SWITCH関数」はいつ使えばいい?
以前の記事でIF関数とIFS関数の書き換えについて紹介しましたが、条件判定に使えるもうひとつの関数「SWITCH」(スイッチ)をご存じですか? 指定した値と一致するかどうかを調べて、対応する値を表示できる関数です。CHOOSE関数の後継として、Excel 2016から使えるようになりました。Microsoft 365のExcelでも利用可能です。お使いのExcelで「SWITCH関数」が使えるかどうかは数式バーに「=sw」と入力することで確認できます。
「IFS関数」より「SWITCH関数」の方がすっきり記述できるシーン
条件を判定するならIF/IFS関数でいいのではないか、と思われるのももっともですが、便利に使えるシーンもあるのです。以下の例を見てください。会員ランクに応じて割引率を取り出すために「IFS関数」を利用しています。
「D2=G2」「D2=G3」「D2=G4」と、文字列を比較する条件が並んでいます。スマートではありませんし、項目数が増えれば同じような条件式を何度も記述する手間が増えます。SWITCH関数で書き換えると以下のようになります。
SWITCH関数の構文は以下の通りです。ひとつめの引数[式]には参照する値、もしくはセルを指定します。2つめの引数[値]と3つめの引数[結果]をセットで考えて、[式]と[値1]が一致した場合に[結果1]、[値2]が一致した場合に[結果2]を表示します。最後の引数[既定の結果]は、どの[値]にも一致しなかった場合に表示する結果です。
先ほどのSWITCH関数の数式は「=SWITCH(D2,G2,H2,G3,H3,G4,H4,0)」でした。「セルD2がセルG2と一致すればセルH2」「セルD2がセルG3と一致すればセルH3」「セルD2がセルG4と一致すればセルH4」、それ以外は「0」を表示するという意味になります。IFS関数よりもSWITCH関数のほうが簡潔です。
なお、SWITCH関数の仕様は「値」と「結果」のセットを126個まで指定可能ですが、5つくらいまでが現実的でしょう。項目数の多いリストから値を取得したい場合は、VLOOKUP関数かXLOOKUP関数を使うべきです。1対1の条件で文字列を切り替えたい(スイッチしたい)時が、SWITCH関数の使いどころと言えます。関数名通りですね。
SWITCH関数を入力する
先ほど紹介した数式の入力方法を紹介します。引数の指定方法はほかの関数と同じです。「=sw」と入力して「SWITCH」を反転させて[Tab]キーを押す。その後、引数となるセルを選択して、半角の「,」(カンマ)で区切りながらセルを選択していきます。
ここでは「値」と「結果」を入力した別表を用意していますが、直接入力で「=SWITCH(D2,"ゴールド会員",0.05,"シルバー会員",0.02,"一般会員",0.01,0)」と指定しても構いません。
旧バージョンのExcelへの対応
SWITCH関数を含むファイルを旧バージョンのExcelで開く可能性がある場合は、互換性を考慮して数式を修正する必要があります。CHOOSE関数かVLOOKUP関数のいずれかを利用することになりますが、これからCHOOSE関数積極的に覚えて利用するメリットはないでしょう。ちなみに構文は以下の通りです。
SWITCH関数の引数[式]に相当する引数[インデックス]は「1」「2」…、のように数値で指定する必要があります。この課題を解決するためにMATCH関数を組み合わせるケースが多いです。先ほどの例をCHOOSE関数で書き換えると「=CHOOSE(MATCH(D2,G2:G4,0),H2,H3,H4)」となります。
MATCH関数は指定した値(セルD2)をセル範囲(G2:G4)から探します。最後の引数に指定した「0」は完全一致の意味。つまり、セル範囲G2~G4からセルD2を完全一致で探します。上記の例では、MATCH関数の結果は「1」、CHOOSE関数の引数[インデックス]=「1」と指定したことになり、結果はセルH2(2%)が表示されます。
ややこしいですよね。旧バージョンの互換性を考慮してSWITCH関数を修正するなら、定番のVLOOKUP関数がおすすめです。
SWITCH関数の活用例
最後にSWITCH関数の活用例を見てみましょう。以下のようなケースでは、ほかの関数を使うよりSWITCH関数に分があります。
上位3位にフラグを立てる
得点や回数などの数値を判断して上位3位にフラグを立てることを考えます。ここでは、来店回数が多い順に3名に特典を付与することを考えます。セル範囲におけるランキングを取得するRANK.EQ関数の結果は「1」「2」「3」…、と数値で返えされるので、その結果をSWITCH関数で判定します。
ここでは、1、2、3位すべてに「○」を表示させましたが、「優勝」「準優勝」「第3位」などの文字列を表示させることも可能です。
からの記事と詳細 ( エクセル上手は1対1の条件で表示を切り替えるならIF/IFS関数より「SWITCH関数」を使う! - 窓の杜 )
https://forest.watch.impress.co.jp/docs/serial/offitech/1418693.html
No comments:
Post a Comment