=SWITCH(B2,"N","North","S","South","E","East","Unknown")は、B2を"N"、"S"、"E"と順に比べ、最初に完全に一致した値と組になっている名前を返します。B2がどれにも一致しないときは、最後の引数のUnknownを返します。
| A | B | C | |
|---|---|---|---|
| 1 | Store | Code | Region |
| 2 | 101 | N | North |
| 3 | 102 | S | South |
| 4 | 103 | W | Unknown |
| 5 | 104 | E | East |
| 6 | 105 | n | North |
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"があります:
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Date | Day number | No default | With default |
| 2 | 2026-03-14 | 7 | Saturday | Saturday |
| 3 | 2026-03-15 | 1 | Sunday | Sunday |
| 4 | 2026-03-16 | 2 | #N/A | Weekday |
| 5 | 2026-03-17 | 3 | #N/A | Weekday |
| 6 | 2026-03-21 | 7 | Saturday | Saturday |
2026年3月14日と21日は土曜日、3月15日は日曜日なので、どちらの列も曜日名を表示します。月曜日と火曜日は1にも7にも一致しないので、C列は#N/A、D列はWeekdayと表示します。D列からは、式が数式でもよいこともわかります。WEEKDAYは1回だけ計算され、SWITCHがその結果を各値と比べます。
範囲を判定するSWITCH(TRUE, ...)
SWITCHは等しいかどうかしか調べませんが、式にTRUEを指定できます。すると各値が比較になり、SWITCHはTRUEと等しくなった最初の比較の結果を返します。これで、最後に既定値を持つIFSのように動きます:
| A | B | C | |
|---|---|---|---|
| 1 | Student | Score | Grade |
| 2 | Ana | 94 | A |
| 3 | Ben | 81 | B |
| 4 | Chloe | 70 | C |
| 5 | Dan | 65 | F |
| 6 | Eve | 88 | B |
比較は順番に読まれるので、入れ子のIFやIFSと同じく、いちばん高いしきい値を先に置きます。最後の"F"には組の相手がないので、70未満のすべての点数に対する既定値になります。IFSでも同じ規則を同じくらいわかりやすく書けます。違いはTRUEの位置だけで、SWITCHでは先頭に1回、IFSでは最後の条件として書きます。
数値を名前に対応させる
よくある使い方は、コード番号を言葉に変えることです。たとえば着順をメダルに変えます:
| A | B | C | |
|---|---|---|---|
| 1 | Runner | Rank | Medal |
| 2 | Ana | 2 | Silver |
| 3 | Ben | 1 | Gold |
| 4 | Chloe | 4 | |
| 5 | Dan | 3 | Bronze |
| 6 | Eve | 7 |
ChloeとEveは3位以内に入らなかったので、既定値の空の文字列になります。コードが1、2、3と途切れずに続くなら、CHOOSEのほうが短く書けます(=CHOOSE(B2,"Gold","Silver","Bronze"))。ただしCHOOSEには既定値がなく、4以上には#VALUE!を返します。
練習: ステータスコード
| A | B | C | |
|---|---|---|---|
| 1 | Invoice | Code | Status |
| 2 | INV-01 | P | |
| 3 | INV-02 | U | |
| 4 | INV-03 | X | |
| 5 | INV-04 | P |
やってみよう: C2で、SWITCHを使ってB2のコードを言葉に変えてください。Pは「Paid」、Uは「Unpaid」、それ以外は「Check」です。数式はC5まで下にコピーされます。
SWITCH、IFS、入れ子のIFの違い
3つとも複数の結果から1つを返しますが、判定する内容が違います。
| SWITCH | IFS | 入れ子の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を使ってください。