SWITCH関数
SWITCH関数は、式またはセル参照の複数の値の中から一致するものに対応する結果を返します。
式じゃなくて値のほうを分岐だよ!
例:【C列】に【A列】のコードの1桁目が「W」の場合は「Word」、「E」の場合は「Excel」と表示し、それ以外は空白にします。
C2: =SWITCH(LEFT(A2,1),“W”,”Word”,“E”,”Excel”,“”)
LEFT関数について詳しくは以下の記事をご覧ください。
IFS関数との違い
IFS関数でも求めることはできますが、意味合いが少し違います。
例:【C列】に【A列】のコードの1桁目が「W」の場合は「Word」、「E」の場合は「Excel」と表示し、それ以外は空白にします。(上記と同じ問題です)
C2: =IFS(LEFT(A2,1)=“W”,”Word”,LEFT(A2,1)=“E”,”Excel”,TRUE,””)
SWITCH関数は、式一つに対して値を分岐させます。
IFS関数は式を分岐させて使う関数なので、分岐分だけ式の入力も必要になります。
条件式が一つならSWITCH関数がいいね!
IFS関数について詳しくは以下の記事をご覧ください。
CHOOSE関数との違い
CHOOSE関数もSWITCH関数と同様に、値を分岐させる関数です。
ただし、値は1から始まる数値にする必要があるため、今回のような問題では使用できません。
以下のように、コード1桁目の「w」を1、「E」を2、その他を「3」と変えれば可能です。
例:【C列】に【A列】のコードの1桁目が「1」の場合は「Word」、「2」の場合は「Excel」と表示し、「3」の場合は空白にします。
C2: =CHOOSE(LEFT(A2,1),“Word”,“Excel”,“”)
数値だけならCHOOSE関数のほうが短くて簡単!
CHOOSE関数について詳しくは以下の記事をご覧ください。
いろいろな関数で比較
問題:【C列】に【B列】(ポイント)のランキングを求め、1位を「優勝」、2位を「2位」、3位を「3位」と表示し、それ以外は空白にしましょう。
SWITCH関数
=SWITCH(RANK.EQ(B2,$B$2:$B$7),1,”優勝”,2,”2位”,3,”3位”,””)
IF関数
=IF(RANK.EQ(B2,$B$2:$B$7)=1,”優勝”,IF(RANK.EQ(B2,$B$2:$B$7)=2,”2位”,IF(RANK.EQ(B2,$B$2:$B$7)=3,”3位”,””)))
IFS関数
=IFS(RANK.EQ(B2,$B$2:$B$7)=1,”優勝”,RANK.EQ(B2,$B$2:$B$7)=2,”2位”,RANK.EQ(B2,$B$2:$B$7)=3,”3位”,TRUE,””)
CHOOSE関数(パターン1)
=CHOOSE(RANK.EQ(B2,$B$2:$B$7),”優勝”,”2位”,”3位”,””,””,””)
CHOOSE関数(パターン2)
=IFERROR(CHOOSE(RANK.EQ(B2,$B$2:$B$7),”優勝”,”2位”,”3位”),””)
XLOOKUP関数
=XLOOKUP(RANK.EQ(B2,$B$2:$B$7),$E$2:$E$4,$F$2:$F$4,””)
VLOOKUP関数
=IFERROR(VLOOKUP(RANK.EQ(B2,$B$2:$B$7),$E$2:$F$4,2,0),””)
こんなにいろいろできるんだ!
ランキングの結果を分岐するという今回のパターンでは、条件分岐のIF関数やIFS関数では長くなってしまいます。
CHOOSE関数は一見短くて良さそうに見えます。
パターン1の場合、6人しかいないことが分かっているので、4~6位のところは空白のダブルクォーテーションで済みます。しかし、10人、20人と人数が多い場合はその分入力しなければなりません。
パターン2はその他の部分がエラーになることを利用して空白にしています。人数が多い時にも対応できるので悪くはなさそうです。
XLOOKUP関数とVLOOKUP関数も短くて良さそうですが、別の表を追加で作らなければなりません。
今回のような問題では、関数1つでシンプルにできるSWITCH関数が最も適しているようです。
アイキャッチで使用したフリー素材はこちらです。