はじめに:なぜネストしたIFはつらいのか
Excelで「条件によって表示する値を変えたい」とき、まず思い浮かぶのが IF関数 です。条件が1つや2つなら問題ありません。しかし、条件が3つ、4つ、5つと増えてくると、こんな数式が生まれます。
=IF(A1>=90,"S",IF(A1>=80,"A",IF(A1>=70,"B",IF(A1>=60,"C","D"))))
カッコが何重にもネスト(入れ子)になり、末尾の )))) を数えるだけで一苦労。1つでもカッコがずれると動かず、後から条件を1つ追加するのも至難の業です。この 「IFのネスト地獄」 を解消するために登場したのが、IFS関数 と SWITCH関数 です。
どちらも Excel 2019 / Microsoft 365 以降で使える比較的新しい関数で、複数条件の分岐を、ネストせずにフラットに書ける のが最大の魅力です。
| 関数 | 得意な場面 | 判定方法 |
|---|---|---|
| IFS | 範囲・大小比較など条件式が必要な分岐 | 条件式(TRUE/FALSE)を順に評価 |
| SWITCH | 「値が◯◯のとき」という固定値の分岐 | 1つの値を複数の候補と照合 |
1. IFS関数
基本構文
=IFS(論理式1, 値1, 論理式2, 値2, …, 論理式N, 値N)
IFS関数は、論理式を左から順番にチェックし、最初に TRUE になった時点でその値を返して終了 します。「条件 → 結果」のペアを、必要な数だけ並べていくイメージです。
先ほどのネストしたIFは、IFSなら次のようにスッキリ書けます。
=IFS(A1>=90,"S", A1>=80,"A", A1>=70,"B", A1>=60,"C", TRUE,"D")
末尾のカッコは1つだけ。条件と結果が一直線に並ぶので、読むのも修正するのも格段にラクになります。
重要ポイント①:順番がすべて
IFSは 上から順に評価して、最初に当てはまったものを返す という性質を持ちます。これは便利な反面、順番を間違えると意図しない結果になる 落とし穴でもあります。
たとえば点数判定で、条件を緩い順(小さい順)に並べてしまうと——
=IFS(A1>=60,"C", A1>=70,"B", A1>=80,"A", A1>=90,"S") ← 間違い
95点を入れても、最初の A1>=60 がいきなりTRUEになるため、全員が”C”判定 になってしまいます。範囲判定では必ず「厳しい順(大きい順)」から書く のが鉄則です。
重要ポイント②:「それ以外」は TRUE で受ける
IFSには、IF関数のような「偽の場合(else)」の引数がありません。どの条件にも当てはまらないと #N/A エラー が返ってしまいます。
これを防ぐのが、最後の TRUE です。
=IFS(A1>=90,"S", A1>=80,"A", TRUE,"その他")
TRUE は「常に真」なので、ここまで来たもの(=上のどの条件にも当てはまらなかったもの)をすべて受け止める 「最後の砦」 として機能します。実務では、この TRUE,"〜" をほぼ必ず付けると覚えておきましょう。
実用例:気温による服装アドバイス
=IFS(B2>=30,"半袖でOK", B2>=20,"長袖がおすすめ", B2>=10,"上着を一枚", TRUE,"防寒必須")
数式を見るだけで判定ロジックが一目瞭然です。これがIFSの読みやすさの威力です。
2. SWITCH関数
基本構文
=SWITCH(対象の値, 候補1, 結果1, 候補2, 結果2, …, [既定値])
SWITCH関数は、1つの値を複数の候補と照合し、一致したものに対応する結果を返す 関数です。「この値が◯◯だったら△△」という、等しいかどうか(完全一致) の分岐を得意とします。
実用例:部門コードを部門名に変換
=SWITCH(A1, "A","営業部", "B","経理部", "C","総務部", "該当なし")
A1が”A”なら「営業部」、”B”なら「経理部」…と変換します。最後の "該当なし" は 既定値(どれにも一致しなかったときの値) で、IFSの TRUE に相当する役割です。
SWITCHは既定値を 最後の引数に値だけ書けば指定できる ので、IFSの TRUE,"〜" よりさらに直感的です。
実用例:曜日番号を曜日名に変換
=SWITCH(WEEKDAY(A1), 1,"日", 2,"月", 3,"火", 4,"水", 5,"木", 6,"金", 7,"土")
WEEKDAY関数が返す1〜7の数値を、対応する曜日名に変換しています。「特定の値 → 特定の結果」 という単純な対応表は、SWITCHの独壇場です。
SWITCHで範囲判定をするテクニック
SWITCHは本来「完全一致」専用ですが、第1引数を TRUE にすると IFSのように範囲判定 もできます。
=SWITCH(TRUE, A1>=90,"S", A1>=80,"A", A1>=70,"B", "D")
「A1>=90 が TRUE と一致するか?」という照合になり、結果的に大小比較が可能になります。ただし、範囲判定なら素直にIFSを使うほうが読みやすいので、これは「こういう書き方もできる」という知識にとどめておくとよいでしょう。
3. IFS と SWITCH の使い分け
両者は似ていますが、向き不向きがはっきりしています。
| 観点 | IFS | SWITCH |
|---|---|---|
| 判定の種類 | 範囲・大小・複合条件 | 値の完全一致 |
| 比較対象 | 条件ごとに別々でOK | 基本は1つの値 |
| 「それ以外」 | TRUE,"〜" で指定 | 末尾に値だけ書く |
| 数式の冗長さ | 条件式を毎回書く | 値の列挙だけで簡潔 |
判断の目安:
- 「◯◯以上」「△△より大きい」など範囲で分ける → IFS
- 「値がAなら」「コードが1なら」など固定値で分ける → SWITCH
たとえば「点数→評価」はIFS、「都道府県コード→地方名」はSWITCH、という具合です。
SWITCHのほうがスッキリする典型例
同じ「1つの値を何度も比較する」処理でも、IFSだと対象セルを何度も書く必要があります。
IFS : =IFS(A1=1,"赤", A1=2,"青", A1=3,"緑", TRUE,"他")
SWITCH: =SWITCH(A1, 1,"赤", 2,"青", 3,"緑", "他")
A1 の繰り返しが消えるぶん、SWITCHのほうが短く、ミスも減ります。「同じセルを = で何度も比較している」と気づいたら、SWITCHへの置き換えを検討 しましょう。
4. ビジネス実務でのユースケース
経理・財務
- 勘定科目の自動分類:取引コードから勘定科目名を変換(SWITCH)
- 与信ランク判定:取引先の残高や支払実績スコアからランク付け(IFS)
- 消費税区分の判定:商品コードから税率区分(10%/8%/非課税)を割り当て(SWITCH)
人事・労務
- 勤続年数による有給付与日数:勤続年数の範囲で付与日数を判定(IFS)
- 役職コードの変換:役職コードを役職名や手当額に変換(SWITCH)
- 評価ランクのコメント生成:評価記号(S/A/B/C)に応じた所見文を出力(SWITCH)
営業・販売
- 販売価格帯の区分:金額帯ごとに「松・竹・梅」などのランク付け(IFS)
- エリアコードの地域名変換:店舗コードや郵便番号から担当エリアを割り当て(SWITCH)
- 達成率による評価:目標達成率の範囲でインセンティブ係数を決定(IFS)
在庫・購買
- 発注区分の自動判定:在庫数の範囲で「緊急発注/通常発注/発注不要」を表示(IFS)
- 仕入先ランクの表示:仕入先コードから取引条件区分を変換(SWITCH)
5. 実務で陥りやすい落とし穴
IFS関数の注意点
- 条件の順番ミス:範囲判定は必ず厳しい順(大きい順)から。緩い条件が上にあると以降が無視される
#N/Aエラー:TRUE,"〜"を入れ忘れると、どの条件にも当てはまらないセルでエラーになる- 比較演算子のミス:
>=と>を取り違えると、境界値(ちょうど80点など)の判定がズレる
SWITCH関数の注意点
- 完全一致のみ:大文字小文字や半角全角の違い、前後の空白があると一致しない。
TRIMやUPPERで前処理を - 範囲判定には不向き:「以上・以下」を直接書けない。範囲ならIFSを選ぶ
- 既定値の書き忘れ:既定値を省略すると、一致しないとき
#N/Aになる
互換性の注意
- IFS・SWITCHは Excel 2019 / Microsoft 365 以降専用 です。Excel 2016以前で開くと
#NAME?エラーになります。古いバージョンのユーザーとファイルを共有する場合は、従来のIF関数で書く か、事前にバージョンを確認しておきましょう。
💼 経理マンの一言
正直に言うと、私がIFSとSWITCHを覚えて一番ありがたかったのは、「半年後の自分が数式を読めること」 でした。
ネストしたIFは、書いた瞬間は頭に入っているので動きます。でも、決算が一巡して半年後にその数式を見返したとき、
))))))を解読しながら「これ、何を判定してたんだっけ…」と固まるんですよね。IFSなら「条件→結果」が一直線に並ぶので、自分以外の人が引き継いでもロジックが追える。これは属人化を防ぐうえで地味にものすごく大きいんです。使い分けの実感としては、勘定科目コードや税区分コードのような「コード→名称」の変換はSWITCH一択 です。対応表がそのまま数式になるので、メンテナンスがラク。逆に 与信ランクや価格帯の判定みたいに「いくら以上」で切る話はIFS ですね。
経理の現場で特に強調したいのが、IFSの
TRUE,"〜"を必ず入れる こと。これを忘れると、想定外のデータが1件混ざっただけで#N/Aが出て、それを合計したセルまで巻き込んでエラーになります。月次の集計表でこれをやると、原因究明に半日溶けます(経験談です)。「想定外は必ず来る」前提で、最後に受け皿を用意しておくのがプロの作法だと思っています。最後に互換性の話。社内に古いExcelが残っているなら要注意です。私は一度、Microsoft 365で組んだIFSの表を取引先に送ったら
#NAME?だらけで返ってきて平謝りした苦い思い出があります。社外に出すファイルは、相手の環境を一度確認する——これも立派なリスク管理です。関数は便利になりましたが、結局のところ 「誰が見ても判定ロジックが分かること」 が一番の価値です。短く書けることより、読みやすく書けること。そこを意識すると、IFSもSWITCHも本当に頼れる相棒になりますよ。


コメント