タグ: SWITCH

  • 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

    関連する関数