SWITCH関数の使い方|値の一致でまとめて振り分ける

執筆者:

カテゴリ:

SWITCHは、1つの値を複数のパターンと突き合わせて、一致したものに対応する値を返す関数です。

「東京なら首都圏、大阪なら関西、…」のような値の言い換えに特化しています。IF のネストや IFS でも書けますが、同じセルを何度も書かずに済むぶん短くなります。

書式

=SWITCH(対象, パターン1, 値1, パターン2, 値2, ..., [既定値])
引数 内容
対象 判定したい値・セル
パターン/値 ペアで並べる。いくつでも増やせる
既定値 どれにも一致しなかったときの値。最後に単独で置く

基本の使い方

=SWITCH(A2, "東京", "首都圏", "大阪", "関西", "福岡", "九州", "その他")

A2が「大阪」なら「関西」、リストに無い値なら「その他」が返ります。

最後の "その他" はペアになっていない単独の引数です。引数の数が偶数なら既定値あり、奇数なら既定値なし、と考えると分かりやすくなります。

IFSとの違い

同じ処理を並べます。

IFS

=IFS(A2="東京","首都圏", A2="大阪","関西", A2="福岡","九州", TRUE,"その他")

SWITCH

=SWITCH(A2, "東京","首都圏", "大阪","関西", "福岡","九州", "その他")

SWITCHは A2= の繰り返しが消えます。項目が20個あれば、この差は大きくなります。

使い分けの基準はシンプルです。

判定の種類 使う関数
値が一致するかだけ SWITCH
>= < などの比較を含む IFS
2分岐だけ IF

SWITCHは完全一致しか判定できません。「80点以上なら」のような範囲判定はIFSの領分です。

既定値を省略するとどうなるか

既定値を書かずに一致するものが無いと、#N/A が返ります。

=SWITCH(A2, "東京","首都圏", "大阪","関西")

A2が「札幌」なら #N/A です。これを意図的に使う場合もありますが、通常は既定値を書いておくほうが安全です。想定外の値が入ったことに気づけないよりは、「その他」として扱うか、明示的に「要確認」と出すほうが運用しやすくなります。

=SWITCH(A2, "東京","首都圏", "大阪","関西", "要確認")

実用例

コードを名称に変換する

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

数値コードでも文字列でも同じように書けます。

曜日番号を曜日名にする

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

WEEKDAY は1(日曜)〜7(土曜)を返すので、そのまま振り分けられます。

複数の値を同じ結果にまとめる

同じ結果になるパターンは、素直に繰り返して書きます。

=SWITCH(A2, "東京","首都圏", "神奈川","首都圏", "千葉","首都圏", "埼玉","首都圏", "その他")

繰り返しが多くなるなら、別シートに対応表を作って XLOOKUP で引くほうが保守しやすくなります。

=XLOOKUP(A2, 対応表!A:A, 対応表!B:B, "その他")

分類が10を超えたら表に移す、というのが実務的な目安です。数式を触らずに分類を追加できます。

注意点

完全一致のみです。 大文字小文字は区別されませんが、前後のスペースは区別されます。"東京 ""東京" と一致しません。外部から取り込んだデータでは TRIM を挟むと安全です。

=SWITCH(TRIM(A2), "東京","首都圏", "その他")

数値と文字列は別物です。 1"1" は一致しません。

パターンに範囲や条件式は書けません。 ">80" のような書き方は文字列として扱われ、一致しません。範囲判定は IFS を使ってください。

TRUEを使った裏技

対象に TRUE を置くと、パターンの側に条件式を書けます。

=SWITCH(TRUE, A2>=90,"A", A2>=80,"B", A2>=70,"C", "D")

「条件式の結果が TRUE と一致するもの」を上から探す、という理屈です。動きますが、読み手が意図を掴みにくいので、素直に IFS を使うほうが親切です。

まとめ

  • - 書式は =SWITCH(対象, パターン1, 値1, ..., 既定値)
  • - 値の一致による振り分けに特化
  • - 比較演算子を含む判定は IFS
  • - 既定値は最後に単独で置く。省略すると #N/A
  • - 分類が10を超えたら表+XLOOKUP

関連する関数

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です