SWITCH関数の使い方|値の一致で結果を切り替える
SWITCH関数は、指定した値に一致するパターンを見つけて、対応する結果を返す関数です。プログラミング言語のswitch文に似た動作で、IF関数のネストよりもシンプルに値の一致判定を記述できます。Excel 2019およびMicrosoft 365以降で利用可能です。
SWITCH関数の基本構文
=SWITCH(式, 値1, 結果1, [値2, 結果2], ..., [既定値])
引数の説明
| 引数 | 説明 | 必須/任意 |
|---|---|---|
| 式 | 評価する値やセル参照 | 必須 |
| 値1 | 式と比較する最初の値 | 必須 |
| 結果1 | 式が値1に一致した場合に返す値 | 必須 |
| 値2, 結果2 | 追加の値と結果のペア(最大126組) | 任意 |
| 既定値 | いずれの値にも一致しない場合に返す値 | 任意 |
SWITCH関数は上から順に値を比較し、最初に一致した値の結果を返します。どの値にも一致せず既定値も指定されていない場合は#N/Aエラーが返されます。
IFS関数との違い
SWITCH関数とIFS関数は似ていますが、用途が異なります。
| 項目 | SWITCH関数 | IFS関数 |
|---|---|---|
| 判定方法 | 値の完全一致 | 論理式の評価 |
| 適した場面 | 特定の値に応じた結果を返す | 範囲や複数条件で判定する |
| 記述 | 値と結果のペア | 論理式と結果のペア |
点数の範囲で成績を判定するような場合はIFS関数が適しており、部署コードに応じた部署名を返すような完全一致の場面ではSWITCH関数が適しています。
実践例1:部署コードから部署名を取得
部署コードに応じて部署名を表示します。
=SWITCH(A2, "D01", "営業部", "D02", "開発部", "D03", "総務部", "D04", "人事部", "不明")
A2が「D01」なら「営業部」、「D02」なら「開発部」を返します。最後の「不明」は既定値で、どのコードにも一致しない場合に返されます。
同じ処理をIF関数のネストで書くと以下のようになります。
=IF(A2="D01", "営業部", IF(A2="D02", "開発部", IF(A2="D03", "総務部", IF(A2="D04", "人事部", "不明"))))
SWITCH関数のほうが構造がわかりやすく、メンテナンスも容易です。
実践例2:曜日番号から曜日名を取得
WEEKDAY関数の結果(1から7の数値)を日本語の曜日名に変換します。
=SWITCH(WEEKDAY(A2), 1, "日", 2, "月", 3, "火", 4, "水", 5, "木", 6, "金", 7, "土")
A2に日付が入力されている場合、その曜日を日本語で表示します。WEEKDAY関数が返す数値をSWITCH関数でわかりやすい文字列に変換しています。
実践例3:月を四半期に変換
月の数値から四半期を判定します。
=SWITCH(MONTH(A2), 1, "Q3", 2, "Q3", 3, "Q3", 4, "Q4", 5, "Q4", 6, "Q4", 7, "Q1", 8, "Q1", 9, "Q1", 10, "Q2", 11, "Q2", 12, "Q2")
この例は日本の会計年度(4月始まり)に対応した四半期変換です。ただし、このように同じ結果が多い場合は、以下のようにCHOOSE関数やIFS関数で記述したほうが効率的です。
=IFS(MONTH(A2)<=3, "Q3", MONTH(A2)<=6, "Q4", MONTH(A2)<=9, "Q1", TRUE, "Q2")
実践例4:ステータスコードの変換
数値のステータスコードをわかりやすいラベルに変換する例です。
=SWITCH(B2, 0, "未着手", 1, "進行中", 2, "レビュー待ち", 3, "完了", 9, "中止", "不明なステータス")
業務システムから出力されたデータのコードを人間が読みやすいラベルに変換する場面で便利です。
実践例5:数式の結果による分岐
SWITCH関数の式には計算結果も指定できます。
=SWITCH(MOD(A2, 3), 0, "3の倍数", 1, "余り1", 2, "余り2")
MOD関数でA2を3で割った余りを求め、その結果に応じた文字列を返します。
よくあるエラーと対処法
#N/Aエラー
どの値にも一致せず、既定値が指定されていない場合に発生します。必ず最後に既定値を追加しましょう。
# エラーになる可能性がある
=SWITCH(A2, "D01", "営業部", "D02", "開発部")
# 既定値を追加
=SWITCH(A2, "D01", "営業部", "D02", "開発部", "不明")
#NAME?エラー
SWITCH関数がサポートされていないバージョン(Excel 2016以前)で使用した場合に発生します。
値と結果のペアがずれる
引数の数を間違えると、値と結果の対応がずれます。特にコピー&ペーストで編集した場合に起こりやすいので、引数の数を確認してください。
# ペアがずれている例(値3つに対して結果2つ)
=SWITCH(A2, "D01", "営業部", "D02", "開発部", "D03")
この場合、「D03」が既定値として扱われ、意図しない動作になります。
SWITCH関数が使えない場合の代替方法
Excel 2016以前では、以下の方法で代替できます。
IF関数のネストで代替する方法は先述の通りです。
CHOOSE関数による代替(値が連続した数値の場合)もあります。
=CHOOSE(A2, "営業部", "開発部", "総務部", "人事部")
CHOOSE関数はインデックス番号で結果を返すため、1から始まる連番の場合にシンプルに記述できます。
VLOOKUPによる代替も可能です。変換テーブルを別のセル範囲に作成し、VLOOKUPで参照します。パターンが多い場合はこちらのほうがメンテナンスしやすくなります。
Google スプレッドシートでの互換性
SWITCH関数はGoogle スプレッドシートでも利用可能です。構文や動作はExcelと同じです。
まとめ
SWITCH関数は値の完全一致に基づく条件分岐をシンプルに記述できる関数です。
- IF関数のネストよりも可読性が高く、メンテナンスが容易
- 値と結果のペアで指定するため、対応関係がわかりやすい
- 既定値を必ず指定してエラーを防ぐ
- 範囲での判定が必要な場合はIFS関数を選ぶ
コードから名称への変換、カテゴリの割り当てなど、特定の値に応じた処理が必要な場面で活用してください。