Menu

SWITCH関数の使い方: Excelの構文、既定値、例

=SWITCH(B2,"N","North","S","South","Unknown")はB2を各値と順に比べ、最初に完全に一致した値と組の結果を返し、何も一致しなければUnknownを返します。SWITCH関数の構文、既定値、SWITCH(TRUE,...)の使い方、IFSや入れ子のIFを使うべき場面を学びます。

このページのシートはすべて実際に動きます。数値や数式を変えると再計算されます。

=SWITCH(B2,"N","North","S","South","E","East","Unknown")は、B2を"N"、"S"、"E"と順に比べ、最初に完全に一致した値と組になっている名前を返します。B2がどれにも一致しないときは、最後の引数のUnknownを返します。

地域コードを名前に
C2
ABC
1StoreCodeRegion
2101NNorth
3102SSouth
4103WUnknown
5104EEast
6105nNorth
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

C2をクリックして数式を確認してください。店舗103のコードWはリストにないので、Unknownになります。店舗105は小文字のnですが、それでもNorthになります。SWITCHの文字列の一致は大文字と小文字を区別しません。B4をSに変えると、地域が更新されます。

SWITCH関数の構文

=SWITCH(expression, value1, result1, [value2, result2], ..., [default])
  • expression(式)は1回だけ計算されます。セルか、WEEKDAY(A2)やMONTH(A2)のような数式です。
  • その後に、値と、expressionがその値と等しいときに返す結果の組が続きます。組は126個まで指定できます。
  • default(既定値)は省略できます。最後の組の後ろに置く追加の引数で、組の相手がいないのでSWITCHはそれを既定値だと判断します。
  • 一致は完全一致です。SWITCHだけでは「より大きい」を判定できません(下のSWITCH(TRUE)を参照)。

SWITCHにはExcel 2019以降かMicrosoft 365が必要です。買い切り版のExcel 2016以前では、SWITCHを使った数式は#NAME?と表示されます。GoogleスプレッドシートにもSWITCHがあります。

既定値と、既定値がないときの#N/A

既定値がないと、何にも一致しない値は#N/Aになります。ここではWEEKDAYの曜日番号(1が日曜日、7が土曜日)をラベルに変えています。C列には既定値がなく、D列には既定値として"Weekday"があります:

週末か平日か
D2
ABCD
1DateDay numberNo defaultWith default
22026-03-147SaturdaySaturday
32026-03-151SundaySunday
42026-03-162#N/AWeekday
52026-03-173#N/AWeekday
62026-03-217SaturdaySaturday
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

2026年3月14日と21日は土曜日、3月15日は日曜日なので、どちらの列も曜日名を表示します。月曜日と火曜日は1にも7にも一致しないので、C列は#N/A、D列はWeekdayと表示します。D列からは、式が数式でもよいこともわかります。WEEKDAYは1回だけ計算され、SWITCHがその結果を各値と比べます。

範囲を判定するSWITCH(TRUE, ...)

SWITCHは等しいかどうかしか調べませんが、式にTRUEを指定できます。すると各値が比較になり、SWITCHはTRUEと等しくなった最初の比較の結果を返します。これで、最後に既定値を持つIFSのように動きます:

SWITCH(TRUE)で成績を出す
C2
ABC
1StudentScoreGrade
2Ana94A
3Ben81B
4Chloe70C
5Dan65F
6Eve88B
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

比較は順番に読まれるので、入れ子のIFやIFSと同じく、いちばん高いしきい値を先に置きます。最後の"F"には組の相手がないので、70未満のすべての点数に対する既定値になります。IFSでも同じ規則を同じくらいわかりやすく書けます。違いはTRUEの位置だけで、SWITCHでは先頭に1回、IFSでは最後の条件として書きます。

数値を名前に対応させる

よくある使い方は、コード番号を言葉に変えることです。たとえば着順をメダルに変えます:

順位をメダルに
C2
ABC
1RunnerRankMedal
2Ana2Silver
3Ben1Gold
4Chloe4
5Dan3Bronze
6Eve7
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

ChloeとEveは3位以内に入らなかったので、既定値の空の文字列になります。コードが1、2、3と途切れずに続くなら、CHOOSEのほうが短く書けます(=CHOOSE(B2,"Gold","Silver","Bronze"))。ただしCHOOSEには既定値がなく、4以上には#VALUE!を返します。

練習: ステータスコード

請求書のステータス
C2
ABC
1InvoiceCodeStatus
2INV-01P
3INV-02U
4INV-03X
5INV-04P
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

やってみよう: C2で、SWITCHを使ってB2のコードを言葉に変えてください。Pは「Paid」、Uは「Unpaid」、それ以外は「Check」です。数式はC5まで下にコピーされます。

SWITCH、IFS、入れ子のIFの違い

3つとも複数の結果から1つを返しますが、判定する内容が違います。

SWITCHIFS入れ子のIF
判定1つの式が等しいか組ごとに任意の条件レベルごとに任意の条件
既定値最後の引数(省略可)最後のTRUEの組最後のIFの偽の場合の値
一致なし、既定値なし#N/A#N/A最後のIFにvalue_if_falseがなければFALSE
セルを繰り返すかいいえ。B2は1回だけはい:B2="N"、B2="S"...はい
Excel 2016以前#NAME?#NAME?使える

1つのセルや1つの数式を、コード、曜日番号、月など決まった値のリストと比べるときはSWITCHを使います。いちばん短く書け、式も1回しか計算しません。条件ごとに比較の内容が違ったり、別のセルを読んだりするときはIFSを使います。ファイルをExcel 2016以前で開く必要があるなら入れ子のIFを使います。コードのリストが長かったり頻繁に変わったりするなら、2列の表にまとめてXLOOKUPで検索してください。そうすれば、コードを追加するときは行を1つ加えるだけで、すべての数式を編集する必要はありません。

よくある質問

ExcelのSWITCH関数は何をしますか?

1つの式を値のリストと比べ、最初に完全に一致した値と組になっている結果を返します。=SWITCH(B2,1,"Gold",2,"Silver",3,"Bronze","")は順位をメダルの名前に変え、ほかの順位には空の文字列を返します。

SWITCHが#N/Aを返すのはなぜですか?

式がどの値にも一致せず、既定値もないからです。最後の組の後ろに"Other"のような引数をもう1つ加えると、SWITCHは#N/Aの代わりにそれを返します。

SWITCHで「より大きい」のような範囲を判定できますか?

SWITCHは等しいかどうかしか判定しないので、直接はできません。式にTRUEを、値に比較を指定します:=SWITCH(TRUE,B2>=90,"A",B2>=80,"B","F")は、最初にTRUEになった比較の結果を返します。

Excel 2016にSWITCH関数はありますか?

Microsoft 365版のExcel 2016にだけあります。SWITCHはExcel 2019、Excel 2021、Excel 2024、Microsoft 365にあります。買い切り版のExcel 2016以前では#NAME?と表示されるので、入れ子のIFかCHOOSEを使ってください。

Coddyのプログラミング言語のイラスト

Coddyでコードを学ぼう

始める