結果(値)の分岐はSWITCH関数でIF関数よりスマートに/Excel

Excelアイキャッチ_SWITCH Excel

SWITCH関数

=SWITCH(式,値1,結果1,値2,結果2…,規定値)
:計算式もしくはセルを参照
:式の結果(値)もしくはセルの内容
結果:直前の値と一致した場合のセルの表示内容を指定
既定値:どの値も当てはまらない場合の表示内容を指定
※大文字小文字の区別なし。ワイルドカード使用不可。不等号などを使った判定不可。
※Excel2019以降

IF関数でいう「論理式」は1つ。
論理式自体を複数使う場合はSWITCH関数ではできない。
SWITCH関数は、1つの式でその結果が複数ある場合にそれぞれどのように表示させるのかを指定する関数。

SWITCH関数構文の図解

セルの値によって表示を変える

SWITCH関数を使ってB列「部署」に、A列「部署コード」に合った部署名を入力したい。
ただし、1:総務部 / 2:人事部 / 3:経理部 とし、それ以外は空白とする。

値に対して分岐するSWITCH関数

=SWITCH(A2,1,”総務部”,2,”人事部”,3,”経理部”,””)

式の意味:
A2】のセルの値が「1」の場合は「総務部」と表示、「2」の場合は「人事部」、
3」の場合は「経理部」と表示する。どれも当てはまらない場合は空白とする。

今回は単純な数字だったけれど、文字列でも同様にできる。
ただし、文字列を使う場合は「”(ダブルクォーテーション)」で括ろう。

計算式の結果によって表示を変える

SWITCH関数を使って、C列「成績」にB列「ポイント」のランキングを反映した表示をしたい。
ただし、1位:優勝 / 2位:2位 / 3位:3位 とし、それ以外は空白とする。

式の結果に対して分岐するSWITCH関数

=SWITCH(RANK.EQ(B2,$B$2:$B$8),1,”優勝”,2,”2位”,3,”3位”,””)

式の意味:
B2】のセルの値が【B2~B8】の中で何位か順位を計算し、「1」の場合は「優勝」と表示、
2」の場合は「2位」、「3」の場合は「3位」と表示する。それ以外は空白とする。

このように他の関数との組み合わせも可能なので、2段階の作業が一度で済む。

SWITCH関数以外の関数を使っても同様に結果を出すこともできる。
では、他の関数でも計算して比較してみよう。

関数:SWITCH・IF・IFS・CHOOSE・VLOOKUP で比較

C列「成績」にB列「ポイント」のランキングを反映した表示をしたい。
ただし、1位:優勝 / 2位:2位 / 3位:3位 とし、それ以外は空白とする。

式の結果に対して分岐するSWITCH関数

SWITCH関数
=SWITCH(RANK.EQ(B2,$B$2:$B$8),1,”優勝”,2,”2位”,3,”3位”,””)
IF関数
=IF(RANK.EQ(B2,$B$2:$B$8)=1,”優勝”,IF(RANK.EQ(B2,$B$2:$B$8)=2,
“2位”,IF(RANK.EQ(B2,$B$2:$B$8)=3,”3位”,””)))
IFS関数
=IFS(RANK.EQ(B2,$B$2:$B$8)=1,”優勝”,RANK.EQ(B2,$B$2:$B$8)=2,
“2位”,RANK.EQ(B2,$B$2:$B$8)=3,”3位”,TRUE,””)
CHOOSE関数(2パターン)
=CHOOSE(RANK.EQ(B2,$B$2:$B$8),”優勝”,”2位”,”3位”,””,””,””,””)
=IFERROR(CHOOSE(RANK.EQ(B2,$B$2:$B$8),”優勝”,”2位”,”3位”),””)
VLOOKUP関数
=IFERROR(VLOOKUP(RANK.EQ(B2,$B$2:$B$8),$E$1:$F$4,2,0),””)

どの関数を使っても同じ結果になる。

IF関数とIFS関数はとにかく長い!
2位だったら…3位だったら…と論理式を分岐の都度入力しなければならないからね。

CHOOSE関数はどうだろう。
短く見えるけれど、4位だったら、5位だったら…と出てくる数すべてを入力するか、
IFERROR関数でエラーにる(4位以降)は空白にする、というようにしなければならない。

VLOOKUP関数も割といい感じ。
でも別で参照用の表を作っておく必要がある。うん、手間かかるー。
VLOOKUP関数の参照用表

というわけで、今回のように式は1つで値が複数ある場合はSWITCH関数がとても便利になる。
複数といっても、多すぎるとVLOOKUP関数のほうが良かったりもする。
そこは柔軟に。

IF関数についてはこちらから。

CHOOSE関数についてはこちらから。

VLOOKUP関数についてはこちらから。

IFERROR関数についてはこちらから。

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