「部署コードを部署名に変換したい」「ステータスコードに応じてラベルを出し分けたい」。こんなとき、IF関数のネストで書いていませんか?
条件が増えるたびに括弧が深くなって、修正するのも大変ですよね。
そんなときに使えるのが、スプレッドシートのSWITCH関数です。この記事では構文と基本の使い方から、実務での活用パターン、IF/IFS/CHOOSEとの使い分けまで解説します。
スプレッドシートのSWITCH関数とは?値の完全一致で分岐する関数
SWITCH関数(読み方: スイッチ関数)は、1つの値を複数の候補と照合し、一致した候補に対応する結果を返す関数です。名前はプログラミングのswitch文に由来しています。
たとえば「部署コードがS01なら営業部、A01なら総務部」のように、値と結果のペアを並べるだけで分岐が完成します。
SWITCH関数にできることをまとめると、次のとおりです。
- 1つのセルの値を複数の候補と比較できる
- 値と結果をペアで並べるので、IFネストより読みやすい
- どの候補にも一致しない場合のデフォルト値を設定できる
- 文字列・数値どちらの値でも使える
「完全一致で値を振り分ける関数」と覚えておくとわかりやすいですよ。
NOTE
SWITCH関数はGoogleスプレッドシートの全バージョンで使えます。Excelでは2019以降またはMicrosoft 365で対応しています。
SWITCH関数の書き方(構文・引数)
基本構文
=SWITCH(式, 値1, 結果1, [値2, 結果2], ..., [既定値])
「式」に判定したいセルを指定し、値と結果のペアを順番に並べます。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 式 | 必須 | 比較対象となるセルや数式 |
| 値1 | 必須 | 式と照合する最初の値 |
| 結果1 | 必須 | 値1と一致したときに返す値 |
| 値2〜値126 | 任意 | 追加の比較値(最大126ペアまで) |
| 結果2〜結果126 | 任意 | 対応する結果 |
| 既定値 | 任意 | どの値にも一致しなかったときの戻り値 |
値と結果は必ずセットで指定します。最後に奇数番目の引数が余った場合、それが既定値として扱われます。
TIP
既定値を省略すると、一致しなかったときに
#N/Aエラーになります。「該当なし」などの既定値を入れておくのがおすすめです。
最もシンプルな使用例
A列に部署コードが入っているとします。コードに応じて部署名を表示してみましょう。
=SWITCH(A2, "S01", "営業部", "A01", "総務部", "F01", "経理部", "該当なし")
- A2(式): 比較対象の部署コード
- “S01”, “営業部”(値と結果のペア): S01なら営業部
- “該当なし”(既定値): どれにも一致しない場合の表示
A2が「S01」なら「営業部」、「X99」なら「該当なし」が返ります。
SWITCH関数の基本的な使い方
文字列で分岐する
B列に申請ステータス(「承認」「却下」「保留」)が入っているとします。ステータスに応じたコメントを表示します。
=SWITCH(B2, "承認", "処理完了", "却下", "差し戻し対応", "保留", "確認待ち", "ステータス不明")
B2が「承認」なら「処理完了」、「保留」なら「確認待ち」が返ります。IF関数のネストで書くと括弧が3段になりますが、SWITCH関数なら1行でスッキリです。
数値で分岐する
B列に評価ランク(1〜4の数値)が入っているとします。ランクに応じたラベルを表示します。
=SWITCH(B2, 1, "S", 2, "A", 3, "B", 4, "C", "未評価")
数値の場合もダブルクォーテーションは不要です。B2が1なら「S」、3なら「B」が返ります。
ExcelのSWITCH関数との違い
SWITCH関数の基本動作はExcelとほぼ同じです。構文も引数も一致しています。
| 項目 | Googleスプレッドシート | Excel |
|---|---|---|
| 基本構文 | 同じ | 同じ |
| 最大ペア数 | 126ペア | 126ペア |
| 既定値 | 最後の奇数引数 | 最後の奇数引数 |
| 対応バージョン | 全バージョン | 2019以降 |
ExcelのSWITCH関数に慣れている方は、同じ書き方でそのまま使えますよ。
実務で使えるSWITCH関数の応用パターン
部署コードから部署名を自動変換する(総務向け)
社員データの部署コードを、読みやすい部署名に変換する場面です。A列に社員名、B列に部署コードが入っているとします。
=SWITCH(B2, "S01", "営業部", "A01", "総務部", "F01", "経理部", "H01", "人事部", "IT1", "情報システム部", "不明")
部署コードのように候補が決まっている場面は、SWITCH関数がもっとも力を発揮します。VLOOKUPで別テーブルを参照する方法もありますが、候補が10個以下ならSWITCH関数のほうが手軽ですよ。
曜日番号を日本語の曜日名に変換する
WEEKDAY関数は曜日を1〜7の数値で返します。SWITCH関数と組み合わせると日本語に変換できます。
=SWITCH(WEEKDAY(A2), 1, "日", 2, "月", 3, "火", 4, "水", 5, "木", 6, "金", 7, "土")
WEEKDAY関数の戻り値(1=日曜〜7=土曜)をそのまま値として並べるだけです。曜日のように候補が固定されている場面にはぴったりですね。
TIP
曜日変換にはCHOOSE関数やTEXT関数でも対応できます。SWITCH関数は候補を自由に書き換えられるのがメリットです。「月」を「Mon」に変えたい場合も結果だけ修正すればOKですよ。
ステータスコードを進捗表示に変換する(プロジェクト管理向け)
タスク管理シートで、数値コードを読みやすいラベルに変換する例です。
=SWITCH(A2, 0, "未着手", 1, "進行中", 2, "レビュー中", 3, "完了", 4, "差し戻し", "不明")
数値コードでも文字列コードでも同じ書き方で対応できます。管理シートでコードを直接見るより、ラベル表示にすると一目で状況がわかりますよ。
よくあるエラーと対処法
#N/Aエラー(一致する値がない)
SWITCH関数でもっとも多いエラーです。式の値がどの候補にも一致せず、既定値も指定されていないときに発生します。
=SWITCH(A2, "S01", "営業部", "A01", "総務部")
A2が「F01」の場合、一致する候補がないため #N/A エラーになります。
対処法: 最後の引数に既定値を追加します。
=SWITCH(A2, "S01", "営業部", "A01", "総務部", "該当なし")
SWITCH関数を使うときは、既定値を必ず設定しておきましょう。
#VALUE!エラー(引数が不正)
引数の数が不足している場合に発生します。値だけを指定して、対応する結果を書き忘れるケースが典型です。
=SWITCH(A2, "S01")
この場合、値1(”S01″)に対応する結果1がないためエラーになります。値と結果がペアになっているか確認してください。
#NAME?エラー(関数名のタイプミス)
関数名のスペルを間違えると #NAME? エラーが表示されます。
× =SWICH(A2, "S01", "営業部")
○ =SWITCH(A2, "S01", "営業部")
「SWICH」ではなく「SWITCH」です。入力時にオートコンプリートの候補から選択すると防げますよ。
大文字・小文字の不一致に注意
SWITCH関数の値の照合は大文字と小文字を区別しません。「abc」と「ABC」は同じ値として扱われます。
ただし、全角と半角は区別されます。「S01」(半角)と「S01」(全角)は一致しません。データの表記ゆれがある場合は、事前にASC関数で半角に統一しておくと安心です。
IF・IFS・CHOOSE関数との違い・使い分け
SWITCH関数と似た機能を持つ関数が3つあります。それぞれの違いを比較表で整理しましょう。
| 比較項目 | SWITCH | IF(ネスト) | IFS | CHOOSE |
|---|---|---|---|---|
| 判定方式 | 完全一致 | 条件式を自由に記述 | 条件式を自由に記述 | 連続整数のインデックス |
| 範囲比較(>=など) | 不可 | 可 | 可 | 不可 |
| 可読性(条件5つ以上) | 高い | 低い(ネストが深い) | やや高い | 高い |
| 既定値の指定 | 最後の引数 | 最後のELSEで指定 | TRUE+値で代用 | なし(#VALUE!) |
| 向いている場面 | コード→名称の変換 | 複雑な条件分岐 | 範囲・大小の条件分岐 | 連番→値の変換 |
IFネスト→SWITCH関数への書き換え
部署コードを3種類で判定する場合を見比べてみましょう。
Before(IFネスト):
=IF(A2="S01", "営業部", IF(A2="A01", "総務部", IF(A2="F01", "経理部", "該当なし")))
After(SWITCH関数):
=SWITCH(A2, "S01", "営業部", "A01", "総務部", "F01", "経理部", "該当なし")
IFネストでは「A2=」を3回繰り返していますが、SWITCH関数では1回で済みます。条件が増えるほどこの差は大きくなりますよ。
SWITCH関数が苦手なケース
SWITCH関数は完全一致しか判定できません。「80点以上ならA」のような範囲条件には対応できません。その場合はIFS関数を使いましょう。
=IFS(B2>=80, "A", B2>=60, "B", B2>=40, "C", TRUE, "D")
TIP
使い分けの判断基準はシンプルです。完全一致ならSWITCH、範囲や大小の比較ならIFS、連番ならCHOOSEと覚えておけばOKですよ。
条件分岐関数の詳しい比較は「スプレッドシートのIFS関数の使い方」でも解説しています。
まとめ
この記事ではスプレッドシートのSWITCH関数について解説しました。ポイントをおさらいしましょう。
- SWITCH関数は値と結果のペアを並べるだけで完全一致の分岐ができる
- 書き方: =SWITCH(式, 値1, 結果1, 値2, 結果2, …, 既定値)
- 既定値を必ず設定して、#N/Aエラーを防ぐ
- IFネストより読みやすく、条件の追加・変更もカンタン
- 範囲条件(>=など)にはIFS関数、連番にはCHOOSE関数を使う
まずは「部署コード→部署名」の変換から試してみてください。IFネストの括弧地獄から解放されますよ。
