ExcelのSWITCH関数の使い方|IFネスト不要で条件分岐をすっきり書く

スポンサーリンク

「部署コードを部署名に変換したい」「ランクごとにコメントを振り分けたい」――こんなとき、IF関数をネストして書いていませんか? 条件が3つ、5つと増えるたびにカッコが深くなり、どこが何の条件か追いかけるだけで疲れてしまいますよね。

ExcelのSWITCH関数を使えば、IFのネストは不要です。値と結果のペアを並べるだけで、条件分岐がすっきり1行で書けます。この記事では、SWITCH関数の構文と基本の使い方から、IF・IFS・CHOOSEとの使い分けまでまとめて解説します。エラー対処法や応用テクニックも紹介しますよ。

  1. ExcelのSWITCH関数とは?(完全一致で値を振り分ける関数)
    1. SWITCH関数が使えるExcelバージョン
  2. SWITCH関数の構文と引数
    1. 基本構文
    2. 引数の説明
    3. 引数の数え方(ペア数の見分け方)
  3. SWITCH関数の基本的な使い方(コード変換の例)
    1. 部署コードを部署名に変換する
    2. 既定値(デフォルト)を設定する方法
    3. 数値の一致で振り分ける
  4. IFネストとSWITCH関数の書き換え比較
    1. IF関数のネストが3段を超えたらSWITCHに切り替えるサイン
    2. 書き換え例:5段IFネスト → SWITCH関数1行
    3. 読み手の負担が減る3つの理由
  5. SWITCH・IFS・IF・CHOOSEの使い分け
    1. 完全一致ならSWITCH、不等号条件ならIFS
    2. 連番・インデックスで選ぶならCHOOSE
    3. 使い分けフロー(判断チャート)
    4. ひと目でわかる4関数の比較表
  6. SWITCH関数のエラーと対処法
    1. #N/A:既定値を忘れると一致しない値でエラーに
    2. #NAME?:Excel 2016以前では使えない
    3. #VALUE!:引数の型が合っていない
    4. よくある誤解:「SWITCHで範囲比較」はできない
  7. SWITCH関数の応用テクニック
    1. WEEKDAY関数と組み合わせて曜日名を表示する
    2. MONTH関数で月別の区分を作る
    3. SWITCH(TRUE,…)で範囲条件を処理する裏ワザ
    4. SWITCHとVLOOKUPの使い分け基準
    5. データの入力規則とセットで使う
  8. SWITCH関数の実務でよく使うパターン集
    1. パターン1:ステータスコードの日本語化
    2. パターン2:優先度ランクのアイコン表示
    3. パターン3:エラー判定の分類
    4. パターン4:アンケート選択肢の集計用変換
  9. よくある質問(FAQ)
    1. SWITCH関数は大文字小文字を区別しますか?
    2. ワイルドカード(*や?)は使えますか?
    3. 配列を返すことはできますか?
    4. 最大何個のペアを書けますか?
    5. Googleスプレッドシートでも同じ構文で使えますか?
  10. まとめ

ExcelのSWITCH関数とは?(完全一致で値を振り分ける関数)

SWITCH関数は、1つの値を複数の候補と照合する関数です。一致した候補に対応する結果を返します。読み方は「スイッチ関数」で、英語の「switch(切り替える)」から来ています。プログラミング言語の switch 文と同じ発想ですね。

たとえば「コードがS01なら営業部、A01なら総務部」のように、完全一致で値を振り分けるのが得意です。

特徴をまとめると、次のとおりです。

  • 1つの式(セル)を複数の値と比較できる
  • 値と結果をペアで並べるので、IFネストより読みやすい
  • 最大126ペアまで指定できる
  • 既定値(デフォルト)を最後の引数で指定できる

SWITCH関数が使えるExcelバージョン

SWITCH関数は比較的新しい関数です。Microsoft公式ドキュメントによると、使えるバージョンは以下のとおりです。

バージョン対応状況
Microsoft 365使える
Excel 2024使える
Excel 2021使える
Excel 2019使える
Excel 2016以前使えない
Excel for the web使える
Excel for Mac(2019以降)使える

NOTE

Excel 2016以前をお使いの場合は、IFのネストやCHOOSE関数で代替できます。この記事の「使い分け」セクションで詳しく紹介しています。

SWITCH関数はGoogleスプレッドシートでも使えます。スプレッドシートでは最大38ペアという違いはありますが、構文と動作はExcelと同じです。

SWITCH関数の構文と引数

基本構文

=SWITCH(式, 値1, 結果1, [値2, 結果2], …, [既定値])

引数の説明

引数必須/任意説明
必須比較対象となるセルや数式
値1必須式と照合する最初の値
結果1必須値1と一致したときに返す値
値2〜値126任意追加の比較値(最大126ペアまで)
結果2〜結果126任意対応する結果
既定値任意どの値にも一致しなかったときの戻り値

値と結果は必ずセットで指定します。最大126ペアまで設定できますよ。

既定値は「ペアにならず余った最後の引数」です。省略すると、一致しなかったときに#N/Aエラーになります。「該当なし」などの既定値を入れておくのがおすすめです。

引数の数え方(ペア数の見分け方)

「引数が奇数個か偶数個か」で既定値の有無がわかります。

  • 奇数個(例: 式 + 3ペア = 7個): 最後が既定値
  • 偶数個(例: 式 + 3ペア = 6個 ではなく、式 + 3ペア × 2 = 7個): 既定値なし

細かい話ですが、引数の数を数えると既定値の漏れをチェックできます。数式を見直すときに使ってみてください。

SWITCH関数の基本的な使い方(コード変換の例)

部署コードを部署名に変換する

部署コードから部署名を表示する例で、基本の流れを見ていきましょう。

サンプルデータ

 A列(部署コード)B列(部署名)
2行目S01←ここに数式を入れる
3行目A01 
4行目F01 
5行目X99 

B2セルに次の数式を入力します。

=SWITCH(A2, "S01","営業部", "A01","総務部", "F01","経理部", "該当なし")

結果

 A列B列(結果)
2行目S01営業部
3行目A01総務部
4行目F01経理部
5行目X99該当なし

A2の値「S01」が最初のペア「S01→営業部」に一致するので、「営業部」が返ります。X99はどのペアにも一致しないので、既定値の「該当なし」が表示されますね。

数式の組み立ては「式→値と結果のペア→既定値」の順番で書くだけです。

既定値(デフォルト)を設定する方法

既定値の仕組みをもう少し詳しく見てみましょう。

既定値なしの場合はこうなります。

=SWITCH(A2, "S01","営業部", "A01","総務部")

A2が「F01」なら、どのペアにも一致しません。既定値がないため#N/Aエラーが出ます。

既定値を追加すると、エラーを防げます。

=SWITCH(A2, "S01","営業部", "A01","総務部", "該当なし")

末尾の「該当なし」が既定値です。想定外の値が入ってもエラーにならないので、実務では必ず設定しておきましょう。

数値の一致で振り分ける

SWITCH関数は文字列だけでなく、数値の完全一致にも使えます。たとえばステータスコードで処理状況を表示するパターンです。

=SWITCH(A2, 1,"受付中", 2,"処理中", 3,"完了", 9,"キャンセル", "不明")

数値はダブルクォートで囲まずに書きます。1、2、3のような連番コードを扱うときによく使うパターンです。

IFネストとSWITCH関数の書き換え比較

IF関数のネストが3段を超えたらSWITCHに切り替えるサイン

IF関数のネストが3段を超えると、カッコの対応がわかりにくくなります。完全一致の条件分岐なら、SWITCH関数への切り替えを検討してみてください。

目安は次のとおりです。

  • 2〜3段のIFネスト: そのままでもOK
  • 4段以上のIFネスト: SWITCH関数にすると読みやすい
  • 5段以上: SWITCH関数に書き換えたほうが保守しやすい

書き換え例:5段IFネスト → SWITCH関数1行

5つの部署コードを判定する例で比べてみましょう。

Before(IFネスト5段):

=IF(A2="S01","営業部",IF(A2="A01","総務部",IF(A2="F01","経理部",IF(A2="H01","人事部",IF(A2="M01","マーケ部","該当なし")))))

After(SWITCH関数):

=SWITCH(A2, "S01","営業部", "A01","総務部", "F01","経理部", "H01","人事部", "M01","マーケ部", "該当なし")

IFネストでは「A2=」を5回書いて、閉じカッコも5つ必要です。SWITCH関数なら式は1回、カッコも1組で済みます。条件が増えるほど差が広がりますよ。

読み手の負担が減る3つの理由

SWITCH関数に書き換えると、単にコードが短くなるだけではありません。読み手の負担も3つのポイントで減らせます。

  1. 式を1回しか書かない: 「A2」の値を何と比べているかが一目でわかります
  2. カッコのネストがない: 閉じカッコの位置で迷うことがなくなります
  3. 値と結果がペアで並ぶ: 「このコードならこの部署」が視覚的に追いやすいです

数式を修正する人が自分以外でも、SWITCH版のほうが引き継ぎやすいですね。

SWITCH・IFS・IF・CHOOSEの使い分け

完全一致ならSWITCH、不等号条件ならIFS

SWITCH関数は完全一致(=)しか判定できません。「80点以上ならA」のような範囲条件には対応できないので、その場合はIFS関数を使いましょう。

比較項目SWITCHIFS
判定方式完全一致のみ条件式を自由に記述
範囲比較(>=など)不可
既定値の指定最後の引数TRUE条件で代用
向いている場面コード→名称の変換範囲・大小の条件分岐

連番・インデックスで選ぶならCHOOSE

CHOOSE関数は、整数インデックス(1, 2, 3…)で結果を選ぶ関数です。SWITCH関数との違いは次のとおりです。

  • CHOOSE: インデックスは1から始まる連続整数のみ
  • SWITCH: 任意の値(文字列・数値・日付など)で比較できる

連番で管理しているデータならCHOOSE、それ以外はSWITCHが便利です。

使い分けフロー(判断チャート)

条件分岐の関数選びに迷ったら、次の順番で判断してみてください。

  1. 完全一致か? → はい → SWITCH関数
  2. 範囲や大小を比較するか? → はい → IFS関数
  3. 連続整数のインデックスか? → はい → CHOOSE関数
  4. 条件が2〜3個程度か? → はい → IF関数のネスト

条件分岐の関数選びについては、IF・IFS・IFERROR・IFNAの使い分けの記事でさらに詳しくまとめています。

ひと目でわかる4関数の比較表

関数判定方式主な用途既定値
SWITCH完全一致コード→名称変換最後の引数
IFS条件式範囲・大小比較TRUE条件で代用
IF2分岐シンプルな二択FALSE側で指定
CHOOSE連番1〜Nのインデックスなし(IFERRORで補う)

このマトリクスを頭に入れておくと、数式を書く前に関数選びで迷わなくなりますよ。

SWITCH関数のエラーと対処法

#N/A:既定値を忘れると一致しない値でエラーに

原因: どの値にも一致せず、既定値も未指定の場合に#N/Aが出ます。

対処法: 最後の引数に既定値を追加しましょう。

=SWITCH(A2, "S01","営業部", "A01","総務部", "該当なし")

末尾の「該当なし」が既定値です。ペアにならず余った引数が既定値として扱われます。

SWITCH関数で最もよくあるエラーなので、既定値は必ず入れるようにしてみてください。

#NAME?:Excel 2016以前では使えない

原因: SWITCH関数はExcel 2019以降の関数です。Excel 2016以前で入力すると#NAME?エラーになります。

対処法: バージョンを確認するには「ファイル → アカウント」を開きます。Excel 2016以前の場合は、IFのネストで代替しましょう。

=IF(A2="S01","営業部",IF(A2="A01","総務部",IF(A2="F01","経理部","該当なし")))

エラーをまとめて防ぎたいときは、IFERROR関数で囲む方法もあります。

=IFERROR(SWITCH(A2, "S01","営業部", "A01","総務部"), "入力値を確認してください")

#VALUE!:引数の型が合っていない

原因: 式の結果と値のデータ型が一致しないときに出る場合があります。たとえば式が数値を返すのに値を文字列で書いている、という不整合です。

対処法: 式と値のデータ型を揃えましょう。数値どうしで比較するか、TEXT関数や&""で文字列化して揃える方法が確実です。

=SWITCH(TEXT(A2,"0"), "1","受付中", "2","処理中", "該当なし")

A2が数値でも文字列でもブレない書き方です。入力値の型が不安定なときの保険として覚えておくと便利ですよ。

よくある誤解:「SWITCHで範囲比較」はできない

SWITCH関数を「80点以上ならA、70点以上ならB」のように使おうとして、うまくいかずハマるパターンがあります。SWITCH関数は完全一致しか判定できません。

範囲条件はIFS関数の出番です。それでもSWITCHで書きたい場合は、後述の「TRUEトリック」を使います。

SWITCH関数の応用テクニック

WEEKDAY関数と組み合わせて曜日名を表示する

WEEKDAY関数は曜日を1〜7の数字で返します。SWITCH関数と組み合わせれば、日本語の曜日名に変換できます。

=SWITCH(WEEKDAY(A2), 1,"日", 2,"月", 3,"火", 4,"水", 5,"木", 6,"金", 7,"土")

WEEKDAY関数の戻り値(1=日曜〜7=土曜)をそのまま値として並べるだけです。曜日のように候補が決まっている場面にはピッタリですよ。

MONTH関数で月別の区分を作る

同じ発想で、月を四半期に変換するパターンも書けます。

=SWITCH(MONTH(A2), 1,"Q4", 2,"Q4", 3,"Q4", 4,"Q1", 5,"Q1", 6,"Q1", 7,"Q2", 8,"Q2", 9,"Q2", 10,"Q3", 11,"Q3", 12,"Q3")

日本の会計年度(4月始まり)で四半期を割り当てる例です。数式は長めですが、条件の対応が明確で読みやすいですよね。

SWITCH(TRUE,…)で範囲条件を処理する裏ワザ

SWITCH関数は完全一致が基本ですが、TRUEトリックを使うと範囲条件も処理できます。

=SWITCH(TRUE, A2>=90,"A評価", A2>=70,"B評価", A2>=50,"C評価", "D評価")

式にTRUEを指定して、各値の位置に条件式を書きます。上から順に評価され、最初にTRUEになった結果が返ります。

ちょっとむずかしく見えますが、やっていることはシンプルです。「どの条件がTRUEか?」を上から順にチェックしているだけですね。

ただし、範囲条件の本来の用途はIFS関数です。TRUEトリックは「裏ワザ」として知っておく程度でOKですよ。

SWITCHとVLOOKUPの使い分け基準

コード変換ならVLOOKUP関数でもできます。どちらを使うか迷ったら、対応の件数で判断してみてください。

基準SWITCH関数VLOOKUP関数
対応の件数5〜10件程度に最適大量データに最適
対応の管理方法数式内に埋め込む別テーブルで管理
メンテナンス性件数が少なければ楽テーブル更新で対応
向いている場面固定の少数コード変換マスタテーブルとの照合

対応が5〜10件で変更が少ないならSWITCH、それ以上ならVLOOKUPが向いています。

データの入力規則とセットで使う

SWITCH関数は「想定した値しか入ってこない列」と相性がよい関数です。データの入力規則(リスト選択)とセットで使うと、未知の値が入ることを防げます。

  1. 入力規則で「S01, A01, F01, H01, M01」のリストを設定
  2. SWITCHで各コードの部署名に変換
  3. 既定値「該当なし」は入力規則の例外対策として保険で残す

入力規則とSWITCHを組み合わせると、入力ミスと数式エラーをダブルで防げますね。

SWITCH関数の実務でよく使うパターン集

よくある業務シーンでの使い方を4つ紹介します。テンプレートとしてコピペで使ってください。

パターン1:ステータスコードの日本語化

業務システムから出力したCSVなどで、ステータスが英語コードのまま入っていることがあります。

=SWITCH(A2, "OPEN","受付中", "WIP","処理中", "DONE","完了", "CANCEL","キャンセル", A2)

最後の既定値をA2にすることで、未知のコードはそのまま表示されます。データの確認用に一時的に使うときに便利ですよ。

パターン2:優先度ランクのアイコン表示

優先度を1〜3で管理しているとき、視覚的にわかりやすく変換できます。

=SWITCH(A2, 1,"★★★(高)", 2,"★★(中)", 3,"★(低)", "未設定")

ダッシュボードやレポートで、数字より一目で判別しやすくなります。

パターン3:エラー判定の分類

IFERROR関数と組み合わせて、エラーの種類別に対応することもできます。

=IFERROR(VLOOKUP(A2,テーブル,2,FALSE), SWITCH(TRUE, A2="","値未入力", LEN(A2)<3,"コード桁数不足", "マスタ未登録"))

VLOOKUPがエラーになったときだけ、原因を分類して表示するパターンです。チェック作業のフィードバックに使えますよ。

パターン4:アンケート選択肢の集計用変換

5段階評価を数値スコアに変換するパターンです。

=SWITCH(A2, "非常に満足",5, "満足",4, "普通",3, "不満",2, "非常に不満",1, 0)

アンケートの文字列回答を数値化できるので、このあと平均や分布の集計に使えます。既定値0は未回答扱いです。

よくある質問(FAQ)

SWITCH関数は大文字小文字を区別しますか?

SWITCH関数は大文字小文字を区別しません。「S01」と「s01」は同じ値として扱われます。大文字小文字を厳密に区別したい場合は、EXACT関数と組み合わせた別の書き方が必要です。

=SWITCH(TRUE, EXACT(A2,"S01"),"営業部", EXACT(A2,"s01"),"営業部(小文字)", "該当なし")

ワイルドカード(*や?)は使えますか?

SWITCH関数はワイルドカードに対応していません。値はあくまで完全一致で比較されます。部分一致で振り分けたいときは、IF関数とSEARCH関数の組み合わせなどを検討してください。

配列を返すことはできますか?

1つの値に対して1つの結果しか返せません。ただし、スピル対応のExcel(Microsoft 365・Excel 2021以降)なら話が変わります。式の部分に配列を入れれば、結果もスピルして並びます。

=SWITCH(A2:A5, "S01","営業部", "A01","総務部", "該当なし")

縦方向の範囲A2:A5をSWITCHで一括変換する書き方です。

最大何個のペアを書けますか?

Excel版は最大126ペアまで指定できます。実務では20ペアを超えるなら、マスタテーブル+VLOOKUP関数への切り替えを検討するのがおすすめですよ。

Googleスプレッドシートでも同じ構文で使えますか?

構文は同じですが、Googleスプレッドシート版のSWITCH関数は最大38ペアという違いがあります。また、スプレッドシートでは配列処理の挙動が少し異なるので、大量データで使うときはテストしてから本番投入してください。

まとめ

ExcelのSWITCH関数の使い方を紹介しました。最後にポイントを整理しましょう。

項目内容
機能1つの値を複数の候補と照合して結果を返す
構文=SWITCH(式, 値1, 結果1, …, [既定値])
最大ペア数126ペア(Googleスプレッドシートは38ペア)
対応バージョンExcel 2019 / 2021 / 2024 / Microsoft 365
得意な場面コード→名称の変換(完全一致の分岐)
苦手な場面範囲条件(>=など)→ IFS関数を使う

SWITCH関数は、IFのネストを置き換えるだけで数式がグッと読みやすくなります。完全一致の分岐が出てきたら、ぜひ試してみてください。既定値の設定と、他関数との使い分けを意識するのが使いこなしのコツですよ。

条件分岐の関数をもっと深く知りたい方は、IF・IFS・IFERROR・IFNAの使い分けもあわせてご覧ください。

タイトルとURLをコピーしました