要点 —
SWITCH(expression, value1, result1, value2, result2, …, [default])はexpressionを一度だけ評価し、値と結果のペアを左から右へたどって、 最初に完全一致した結果を返します。1つの入力を複数の出力のいずれかに変換する 綺麗な方法であり、積み上がったネストIFの平坦な代替です。すべてを支配する たった1つのルール:SWITCH は 完全一致で照合し、>や<では決して照合しません。
=SWITCH(A2, "N", "North", "S", "South", "E", "East", "W", "West", "Unknown")
=SWITCH(WEEKDAY(A2), 1, "Weekend", 7, "Weekend", "Weekday")
=SWITCH(B2, 1, "Gold", 2, "Silver", 3, "Bronze") ' default なし -> 一致しなければ #N/A
=IF(A2="N","North",IF(A2="S","South",IF(A2="E",…))) を書いていて閉じ括弧の数を
見失ったことがあるなら、SWITCH こそあなたが欲しかった関数です。テーブルのように
上から下へ読め、新しいケースの追加はネストの階層が1つ増えるのではなく、ペアが1組
増えるだけです。
この記事でわかること
- 考え方の軸:完全一致の値をキーにしたインラインの振り分けテーブル
- なぜ SWITCH は完全一致のみなのか——それが
IFSとの境界線 - default 引数と、それを忘れたときに出る
#N/A - 範囲を扱う
SWITCH(TRUE(), …)のテクニック——そしてそれがトレードオフである理由 - SWITCH と
IFS、ネストしたIFの比較:実際に適用できる判断ルール
考え方の軸:インラインの振り分けテーブル
SWITCH は、数式の中に直接書く小さなルックアップテーブルだと考えてください。調べたい
値を1つ(expression)渡し、続けてケース → 結果のペアを並べます。Excel は式を
一度だけ評価し、最初に等しくなったケースの隣にある結果を返します:
=SWITCH(status, "A", "Active", "P", "Pending", "C", "Closed", "Unknown status")
' ▲ これを調べる ▲ "A" に等しければ "Active" を返す … 以下同様
SWITCH の良いところは、すべてこの絵から生まれます。平坦です——ケースは互いに
ネストせず横並びなので、10個のケースも2個と同じくらい読みやすい。式を一度だけ
評価するので、SWITCH(SomeSlowFormula(), …) はネストした IF の連鎖のように分岐ごとに
再計算しません。そして意図が一目瞭然です:この数式は1つのものを固定された結果の集合に
対応づけている、と。
SWITCH を定義するただ1つのルール:完全一致
「SWITCH が動かない」という疑問をすべて説明する事実がこれです:SWITCH は式を各ケースと
単純な等価——= と同じ——で比較します。 演算子もなければ、範囲も「より大きい」も
ありません。ケースは式と等しいか、等しくないかのどちらかです。
だから、これは初心者の期待どおりには動きません:
=SWITCH(score, ">90", "A", ">80", "B", "F") ' 誤り——決して一致しない
SWITCH は score をテキスト ">90" と比較しますが、数値がこれに等しくなることは
ないので、常に "F" まで落ちてしまいます。範囲は SWITCH の用途ではありません。分岐が
完全一致の値ではなく条件(score >= 90、X 以上 Y 以下の金額)になった瞬間、SWITCH の
限界に達しています——そこは IFS の領域です。頭の中で
線引きを明確にしておきましょう:
- 1つの式を完全一致の値のリストと比較 → SWITCH
- 独立した条件のリスト(範囲を含む) → IFS
default 引数と #N/A の罠
SWITCH は一致する値を持たない省略可能な最後の引数を取ります——これが default で、 何も一致しなかったときに返されます:
=SWITCH(grade, "A", 4.0, "B", 3.0, "C", 2.0, 0) ' 0 が default
引数リストの読み方:ペアは value, result で、最後に奇数番目の引数がぽつんと
残っていれば、それが default です。省略すると、一致しなかった式は空白ではなく
#N/A を返します:
=SWITCH(B2, 1, "Gold", 2, "Silver", 3, "Bronze") ' B2 = 4 -> #N/A
これは最もよくある SWITCH のバグです:実データには必ず想定外の値が含まれ、default が
ないとそれが列のあちこちに #N/A として現れます。default を習慣にしましょう——たとえ
"Other" や 0 だとしても——そうすれば想定外の入力は、エラーではなく、あなたが選んだ
場所に着地します。
SWITCH(TRUE()) のテクニック——賢いが、よく考えて
SWITCH に範囲を扱わせる、よく知られた方法があります:式を TRUE() にして、各ケースを
TRUE または FALSE を返す条件にするのです。すると SWITCH は、最初に TRUE と評価
されたケースの結果を返します:
=SWITCH(TRUE(),
score>=90, "A",
score>=80, "B",
score>=70, "C",
"F")
これが動くのは、score>=90 が TRUE/FALSE に評価され、SWITCH が TRUE() に等しい
最初のケースを探すからです。実際に便利で、順序に依存します(最初に一致したものが勝つので、
段階評価の IFS とまったく同じく、厳しいほうから緩いほうへ並べます)。
ただしトレードオフには正直になりましょう:等価照合の道具を使って範囲ロジックを偽装して
いるわけで、次に読む人は式がなぜ TRUE() なのかを解読しなければなりません。分岐が範囲
なら、IFS が同じことをより直接的に表現します。すでに
SWITCH の中に深く入っていて範囲のケースを1つだけ足したいときは SWITCH(TRUE()) に手を
伸ばし、数式全体が範囲なら IFS を選びましょう。
SWITCH と IFS、ネストした IF の比較
3つとも複数の候補から1つの結果を選ぶので、どれを使うかは能力の問題ではありません—— どれがあなたの意図を最も明確に述べるか、の問題です:
' ネストした IF——動くが、括弧が積み上がり意図が埋もれる
=IF(A2="N","North",IF(A2="S","South",IF(A2="E","East","Other")))
' SWITCH——1つの式、完全一致の値によるケース、平坦
=SWITCH(A2, "N","North", "S","South", "E","East", "Other")
' IFS——独立した条件、特に範囲
=IFS(A2>=90,"A", A2>=80,"B", A2>=70,"C", TRUE,"F")
判断ルール:
- 1つのものを完全一致の値の集合と比較している? SWITCH。最も読みやすく、式を一度 だけ評価します。
- 独立した条件や範囲を判定している? IFS。
- まだ3階層以上のネストした IF を書いている? それが危険信号です——上の2つのどちらかのほうが読みやすく、半年後に編集しても壊れにく くなります。
はっきり述べておくべき注意点が1つ:SWITCH は Excel 2019 と Microsoft 365 で登場 しました。Excel 2016 以前には存在せず、その場合はネストした IF か、 VLOOKUP / INDEX & MATCH を使ったルックアップテーブルに戻ることに なります。
判断のポイント
SWITCH は意図を可視化することで存在価値を発揮します。数式の仕事が「この1つの値をこれらの
結果のいずれかに対応づける」ことなら、SWITCH はまさにそれを述べます——平坦で、順序
立っていて、拡張も簡単です。その狭さ(完全一致のみ)は弱点ではありません。道具を選び
間違えたときに教えてくれる信号です。ケースに ">90" という文字列を詰め込んでいたり、
SWITCH(TRUE()) を5段もネストしていたりするなら、その数式は IFS が欲しかったと告げて
いるのです。そしてケースのリストが長く、安定していて、そもそもデータの中にあるなら——
地域、商品コード、ステータスのラベルなど——最も保守しやすい答えは SWITCH でも IFS
でもなく、数式に触れずに編集できる本物のルックアップテーブルです。判断の形に道具を
合わせれば、数式はおのずと読めるようになります。
ExcelMaster の使いどころ
SWITCH の問題の多くは構文ではありません——分岐が範囲なのに SWITCH を選んでしまう、
あるいは #N/A が出るまで default を忘れている、といったことです。ExcelMaster は
あなたのために正しい構造を選びます:完全一致の対応づけには SWITCH を使い、分岐が範囲に
なった瞬間に IFS へ移し、常に妥当な default を用意し、
ケースが実はデータなのであればルックアップテーブルを提案します。「A列のコードから各行に
北/南/東/西のラベルを付けて」や「これらのスコアに成績を付けて」と伝えれば、平坦で漏れが
なく、来期に開き直しても読める数式を書きます。
よくある質問
ExcelのSWITCH関数はどう動きますか?
=SWITCH(expression, value1, result1, value2, result2, …, [default]) は expression
を一度だけ評価し、各 value と順に完全一致で比較して、一致した result を返します。
何も一致しなければ、省略可能な default を返し、それも指定していなければ #N/A を
返します。
SWITCH と IFS の違いは?
SWITCH は1つの式を完全一致の値のリストと比較します——コードやラベルを結果に
対応づけるのに最適です。IFS は score>=90 のような範囲を
含む独立した条件のリストを評価します。完全一致には SWITCH、条件には IFS を使います。
SWITCH で default 値を追加するには?
一番最後に、値とペアになっていない引数を1つだけ置きます:
=SWITCH(A2,"N","North","S","South","Unknown")。ここでは A2 が "N" でも "S" でもない
ときに常に "Unknown" が返ります。これがないと、一致しなかった式は #N/A を返します。
SWITCH で「より大きい」や範囲を扱えますか?
直接はできません——完全一致しか判定しないためです。回避策は
SWITCH(TRUE(), condition1, result1, …) で、各条件が TRUE/FALSE を返すようにします。
全体が範囲ロジックなら、IFS のほうがたいてい分かりやすく
なります。
SWITCH は Excel 2016 で使えますか?
いいえ。SWITCH は Excel 2019 で導入され、Microsoft 365 にもあります。Excel 2016 以前 では、ネストした IF か、 VLOOKUP を使ったルックアップテーブルを使ってください。
検証環境
検証環境: Excel 365 (Windows 11) — 最終確認 2026-07-08。
関連ガイド: ExcelのIFS関数 · ExcelのIF関数 · ExcelのCHOOSE関数 · INDEX & MATCH
