🚀The world's best VBA AI has evolved. ExcelMaster is now an autonomous Agent.Read more →
Back to Blog

ExcelのSWITCH関数 — ネストしたIFを平坦で読みやすい数式に置き換える

|

ExcelのSWITCH関数 — ネストしたIFを平坦で読みやすい数式に置き換える

要点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 >= 90X 以上 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>=90TRUE/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つの式完全一致の値のリストと比較します——コードやラベルを結果に 対応づけるのに最適です。IFSscore>=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