スプレッドシートのSWITCH関数の使い方|値でケース分岐

スポンサーリンク

「部署コードを部署名に変換したい」「ステータスコードに応じてラベルを出し分けたい」。こんなとき、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つあります。それぞれの違いを比較表で整理しましょう。

比較項目SWITCHIF(ネスト)IFSCHOOSE
判定方式完全一致条件式を自由に記述条件式を自由に記述連続整数のインデックス
範囲比較(>=など)不可不可
可読性(条件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ネストの括弧地獄から解放されますよ。


この記事で紹介した関数・関連記事

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