この記事では、Excelで「もしも〇〇だったら、△△にする」という条件分岐をスマートに実現できるSWITCH関数について解説します。
- SWITCH関数の基本的な使い方とメリット
- 似ているIFS関数との違い
- VLOOKUP関数やIF関数との使い分け
- 「以上・以下」など範囲の条件を扱うテクニック
- 複数の値をまとめて処理する方法
- SWITCH関数の入れ子(ネスト)を使った応用例
- SWITCH関数を使う上での注意点
SWITCH関数とは? 条件分岐をシンプルにする機能
こんなとき、SWITCH関数を使えば、スッキリと記述できて、後から見ても分かりやすいのが大きなメリットです!
SWITCH関数の基本構文
SWITCH関数は、次のようになります。
=SWITCH(検査値, 値1, 結果1, 値2, 結果2, …, [既定値])
検査値:判定したい基準となるセルや値(例:評価が入力されたセル)
値1:検査値がこの値と等しいか判定する値(例:検査値が「A」だったら)
結果1:検査値が値1と等しかった場合に返したい結果(例:『優』)
既定値:どの値にも当てはまらなかった場合に返す結果(省略可能)
【例題1】部署コードを部署名に変換する
課題: 下の表で、部署コード(A列)に応じて部署名(B列)を自動で入力したい。

解決策(A2セルに入力する数式):
=SWITCH(A2, 1, “営業部”, 2, “開発部”, 3, “総務部”, 4, “人事部”, 5, “経理部”, “その他”)

SWITCH関数とIFS関数の違い

SWITCH関数と似た働きをする関数にIFS関数があります。どちらも複数の条件分岐をシンプルな構文で書ける便利な関数ですが、使い分けのポイントがあります。
| 関数 | 判定の仕方 | 得意なこと |
|---|---|---|
| SWITCH関数 | 検査値と値が「等しい」かどうか | 特定のコードや文字列を別の結果に変換する(1対1の変換) |
| IFS関数 | 条件式が「真」かどうか(等しい、以上、以下、AND/ORなど何でもOK) | 点数によって評価を分けるなど、範囲や複雑な条件の分岐 |

簡単に言えば、「この値だったらこれ!」という完全に一致の判定はSWITCH関数がシンプルで分かりやすく、「A以上でB以下だったらこれ!」という範囲や複雑な条件はIFS関数が得意です。
【例題2】SWITCH関数とIFS関数で評価を付ける(点数による評価)
課題: 点数(A列)に応じて評価(B列)を付けたい。

解決策(IFS関数を使用):
この場合、「90点以上」といった範囲の条件が必要なので、IFS関数を使います。SWITCH関数では対応できません。
=IFS(A2>=90, “A”, A2>=70, “B”, A2<70, “C”)

SWITCH関数を使うメリットとデメリット

SWITCH関数を使う最大のメリットは、長いIF関数の入れ子構造(ネスト)と比較して、「検査値」が一つで済むため、記述が短く、非常に読みやすいことです。
| 項目 | SWITCH関数 | IFS関数 | IF関数の入れ子 |
|---|---|---|---|
| 可読性 | 非常に高い (シンプル) | 高い | 低い (条件が多いと複雑) |
| 判定条件 | 等しい(完全一致)のみ | 自由 (>, <, AND/ORなど) | 自由 |
| 処理速度 | 速い (等号判定のみのため) | 標準的 | 遅くなることがある |
| 使い分け | コード→名称など、1対1変換 | 範囲判定、複雑な条件 | 非常に古いExcelバージョンで対応 |
SWITCH関数の真のライバルはVLOOKUP関数?
特定のコードを名称に変換する作業(例題1)では、VLOOKUP関数も使えます。
マスタ(参照元)が今後変わる可能性がある場合や、条件が10個以上ある場合は、数式の修正が不要なVLOOKUP関数を使う方が、メンテナンス性が高くなります。
反対に、条件が少なく、変更がない場合は、マスタを用意する必要のないSWITCH関数が便利です。
SWITCH関数で「以上」「以下」の範囲を扱うテクニック
SWITCH関数は基本的に「等しい」しか判定できませんが、工夫することで「以上」「以下」のような範囲の判定も可能です。
それは、検査値に「真 (TRUE)」を使う方法です!
検査値に「TRUE」を設定する
検査値にTRUEを設定し、値1・値2…の部分に「A2>100」などの条件式を入れます。
条件式がTRUEになったら、その結果を返すという仕組みです。
=SWITCH(TRUE, 条件式1, 結果1, 条件式2, 結果2, …, [既定値])
【例題3】注文金額によるランク付け
課題: 注文金額(A列)に応じて、顧客ランク(B列)を自動で判定したい。

解決策(A2セルに入力する数式):
高額な条件から順番に記述するのがポイントです。
=SWITCH(TRUE, A2>=100000, “プラチナ”, A2>=50000, “ゴールド”, A2>=10000, “シルバー”, “レギュラー”)

複数の値をまとめて処理したい!
「『A』と『B』どちらも同じ結果にしたい」など、複数の値に対して同じ結果を返したい場合はありませんか?
そんなときは、OR関数を組み合わせて、複数の値をひとつの条件式にまとめましょう。
【例題4】部署コードと担当者
課題: 部署コードが「1」(営業部)または「2」(開発部)の場合、担当者は「田中」と表示し、それ以外は「佐藤」と表示したい。

解決策(A2セルに入力する数式):
ここでも検査値にTRUEを使うテクニックが役立ちます。
=SWITCH(TRUE, OR(A2=1, A2=2), “田中”, “佐藤”)

【応用】SWITCH関数を入れ子(ネスト)にするテクニック
SWITCH関数は、それ自体が複数のIF文をまとめたような機能を持っていますが、さらに入れ子にすることで、複雑な階層的な条件分岐もシンプルに処理できます。
目的: まず「地域」で分け、さらに地域ごとに「部署」の担当者を割り振る。
【例題5】地域別・部署別の担当者割り振り
課題: 地域コード(A列)と部署コード(B列)を組み合わせて、担当者名(C列)を判定したい。

解決策(C2セルに入力する数式):
「地域コード(A2)」が検査値となり、その結果に応じて、さらに「部署コード(B2)」を検査値とする別のSWITCH関数を呼び出します。
=SWITCH(A2, 1, SWITCH(B2, 1, “山田”, 2, “田中”, “不明”), 2, SWITCH(B2, 1, “鈴木”, 2, “佐藤”, “不明”), “地域不明”)

SWITCH関数を使いこなすための注意点 ⚠️
SWITCH関数は便利ですが、いくつか注意点があります。
- 数値と文字列の区別
- 既定値の指定
- 複雑な範囲条件
数値と文字列の区別
数値の1と文字列の”1″は区別されます。検査値が数値なのに、値1に”1″と指定すると判定されません。
数値はそのまま(例:1)、文字列はダブルクォーテーションで囲む(例:”A”)など、データ型を合わせましょう。
既定値の指定
最後の引数[既定値]を省略すると、どの値にも一致しなかった場合に#N/Aエラーが表示されます。
エラーを防ぐためにも、最後に必ず既定値(例:”その他”や””)を指定しましょう。
複雑な範囲条件
検査値にTRUEを使えば範囲も扱えますが、条件が増えすぎるとIFS関数の方が分かりやすいことがあります。
シンプルな一致判定はSWITCH、複雑な範囲判定はIFSと使い分けるのがおすすめです。
まとめ:SWITCH関数を実務に活かそう!
ExcelのSWITCH関数は、複数のIF関数を重ねる煩雑さから私たちを解放してくれる、非常に便利な関数です。
ぜひ、あなたの実務で、部署コードの変換、ステータス(未処理 → 処理中 → 完了)の自動判定など、色々な場面でSWITCH関数を試してみてくださいね!
コメント