IFS関数 完全ガイド:IFネスト・SWITCH・CHOOSE・XLOOKUPとの使い分け
📖 目次
1 やりたいこと
「90点以上ならA、80点以上ならB、70点以上ならC…」のように、条件が多段階あるときにIF関数のネスト地獄を回避したい。
さらに「完全一致で分岐したいのか」「範囲(以上・以下)で分岐したいのか」によって最適な関数が異なります。本記事では IFS・IF・SWITCH・CHOOSE・XLOOKUP を横断的に比較し、場面ごとの最適解を示します。
2 IFS関数の構文と基本
構文
条件は上から順に評価され、最初にTRUEになったものの値が返る。
最大 127 組 の条件・値ペアを指定可能(Excel 2019以降 / Microsoft 365など)。
具体例:成績判定
どの条件にも当てはまらなかった場合、IFS関数は
#N/A エラーを返します。必ず末尾に
TRUE, "デフォルト値" を入れましょう。これがIF関数のELSE(どれにも該当しなかった場合)に相当します。
IFS関数は「最初にTRUEになった条件」で確定します。成績判定のように範囲条件を使う場合、厳しい条件(>=90)から順に書く必要があります。
もし
A1>=60 を先に書くと、90点の人も「D」と判定されてしまいます。
3 IFネストとの違い
旧バージョンでの代替法:IF多段ネスト
| 比較項目 | IFネスト | IFS |
|---|---|---|
| 可読性 | 閉じ括弧 )))) が末尾に連続し見づらい | 条件と値が平坦に並ぶ |
| ELSE(デフォルト値) | 第3引数に自然に書ける | 末尾に TRUE,"値" が必要(忘れると#N/A) |
| 最大条件数 | 64段(ネスト上限) | 127組 |
| 短絡評価 | 一致した時点で残りを評価しない | 全引数を事前評価する(後述) |
| 数式のメンテナンス性 | 途中に条件を挿入・削除しにくい | 条件ペアを追加・削除しやすい |
IFネストでは5段階の成績分岐だけで4重ネストになります。IFS関数は構造的にフラットなので、10段階以上の分岐でも見通しが良いままです。条件の追加・削除もペア単位で行えるため、メンテナンスが格段に楽になります。
4 SWITCH関数との違い(完全一致 vs 範囲条件)
SWITCH関数の構文
「式」を一度だけ指定し、各「値」と完全一致で比較。一致した「結果」を返す。
末尾にペアにならない引数を1つ置くと、それがデフォルト値(ELSE相当)になる。
具体例:部署コード → 部署名
IFS vs SWITCH:核心の違い
| 比較項目 | IFS | SWITCH |
|---|---|---|
| 条件の種類 | 範囲条件(>=, <=, <>)も自由自在 | 基本は完全一致のみ |
| セル参照の回数 | 条件ごとに毎回セルを参照A1>=90, A1>=80, ... | 先頭で1回だけ指定SWITCH(A1, ...) |
| デフォルト値 | TRUE,"値" が必要 | 末尾に値を1つ書くだけ |
| 数式の長さ | 条件式を毎回書くため長くなりがち | 完全一致なら最も短い |
| 複数列の条件 | A1="東京", B1>=100 など異なる列を条件にできる | 1つの式しか評価できない |
| 最大条件数 | 127 組 | 126 組 |
完全一致(コード→名前、記号→ラベル)の変換 → SWITCH がベスト。セル参照1回で済みスッキリ。
範囲条件(○○以上、○○未満)や複数列を横断する条件 → IFS が適任。
5 SWITCH(TRUE,...) テクニック
「SWITCHは完全一致しかできない」というのは正確ではありません。第1引数に TRUE を指定することで、範囲条件にも対応できます。
TRUE を「探すべき値」にセットし、各条件式の中で最初に TRUE を返したものが採用される。
末尾の "F" がデフォルト値。IFS と違い自然にデフォルト値を書ける。
| 比較項目 | IFS | SWITCH(TRUE,...) |
|---|---|---|
| 範囲条件 | 対応 | 対応 |
| デフォルト値の書き方 | TRUE,"F" と書く必要あり | 末尾に "F" と書くだけ |
| セル参照の回数 | どちらも条件ごとに参照が必要 | |
| 可読性 | 良い | デフォルト値の扱いがよりシンプル |
SWITCH(TRUE,...) を使うと、SWITCHの「セル参照1回」というメリットは失われます。範囲条件の場合、IFS とほぼ同等の冗長さになるため、「IFS で十分」と考える人もいます。好みの問題ですが、デフォルト値が自然に書ける点で SWITCH(TRUE,...) を好むユーザーも多いです。
6 CHOOSE関数との違い
CHOOSE関数の構文
インデックスが 1 なら値1、2 なら値2 … を返す。「1から始まる連番」でしか分岐できないのが最大の制約。
具体例:月番号 → 四半期
| 比較項目 | IFS | SWITCH | CHOOSE |
|---|---|---|---|
| 条件指定 | 自由な論理式 | 任意の値と完全一致 | 1始まりの連番のみ |
| 文字列キー | 可 | 可 | 不可 |
| デフォルト値 | TRUE必須 | 末尾に書くだけ | なし(#VALUE!エラー) |
| 最大条件数 | 127 | 126 | 254 |
| 適用場面 | 範囲・複合条件 | 完全一致の変換 | 連番→値の変換 |
CHOOSE は WEEKDAY や MONTH の戻り値(1〜12の連番)のように、インデックスが自然に 1 から始まる場合に限ってシンプルに書けます。それ以外では SWITCH が上位互換と考えてよいでしょう。
7 XLOOKUP / VLOOKUPとの比較
条件分岐が多くなる場合、そもそも数式内にロジックを書かず、別表(マスタ)に持たせる設計が有力な選択肢になります。
マスタ参照方式
| コード(E列) | 部署名(F列) |
|---|---|
| S | 営業部 |
| E | 技術部 |
| A | 総務部 |
| 比較項目 | IFS / SWITCH | XLOOKUP(マスタ参照) |
|---|---|---|
| 条件の管理場所 | 数式の中 | セル上の別表(変更が容易) |
| 条件の追加 | 数式を編集する必要あり | 別表に行を追加するだけ |
| 条件数が多い場合 | 数式が膨大になる | 別表の行数が増えるだけ |
| 範囲条件(以上・以下) | IFS が得意 | XLOOKUPの近似一致モードで対応 |
| 数式の分かりやすさ | 条件が多いと読みにくい | 数式自体は短い |
条件が 5個以下で変更頻度が低い → IFS / SWITCH で数式内に書くほうが手軽。
条件が 6個以上、または頻繁に変更がある → 別表 + XLOOKUP が保守性で圧倒的に優秀。
8 5関数 総合比較表
| 項目 | IFネスト | IFS | SWITCH | CHOOSE | XLOOKUP |
|---|---|---|---|---|---|
| 完全一致 | ○ | ○ | ◎ 最適 | ○(連番のみ) | ○ |
| 範囲条件(>=, <=) | ○ | ◎ 最適 | △(TRUE技必要) | × | ○(近似一致) |
| 複数列の条件 | ○ | ◎ | × | × | × |
| デフォルト値 | ◎ 自然 | △ TRUE必須 | ◎ 自然 | × なし | ◎ 自然 |
| セル参照の回数 | 条件ごと | 条件ごと | 1回 | 1回 | 1回 |
| 可読性(条件多数時) | × | △ | ◎ | △ | ◎ |
| 短絡評価 | ◎ する | × しない | × しない | — | × しない |
| 条件の外部管理 | × | × | × | × | ◎ 別表 |
9 どの関数を使う? フローチャート
Q1. 条件は何個ある?
→ 3個以上 → 次へ。
Q2. 条件の種類は?
→ 範囲条件(以上・以下・未満)→ IFS関数(または SWITCH(TRUE,...))。
→ 複数列にまたがる条件(A列="東京" かつ B列>=100 など)→ IFS関数。
Q3. 条件は何個ある? 変更頻度は?
→ 6個以上・変更が多い → 別表 + XLOOKUP(数式を変えずにマスタ修正だけで対応)。
Q4. 旧バージョン(2016以前)への互換性が必要?
→ 不要 → IFS / SWITCH を活用。
10 知っておくべき落とし穴
落とし穴①:IFS・SWITCHは全引数を評価する(短絡評価しない)
通常のIF関数は、条件が確定した時点で残りの引数を評価しません(短絡評価)。しかし、IFS関数とSWITCH関数は、結果に使わない引数も含めて全て事前に評価します。
⚠️ 問題が起きる例A1="掛け算" でも、B1/C1 が評価される。C1=0 の場合 #DIV/0! エラーが発生する可能性がある。
IF関数のネストであれば、該当しない分岐の計算は実行されない。
引数に重い計算(SUMPRODUCT、大規模XLOOKUP など)を含めている場合、条件に一致しなくても全て計算されるため、想定外の処理時間がかかることがあります。
重い計算を分岐させたい場合は、IFネストまたは LET関数と組み合わせたIFネスト を使いましょう。
落とし穴②:IFS の末尾 TRUE 忘れ
IFS関数は全条件に一致しないと #N/A エラーになります。IF関数の「第3引数を省略すると FALSE が返る」動作とは異なります。
落とし穴③:旧バージョンでの互換性
IFS・SWITCH は Excel 2016 以前では使用できません。旧バージョンで開くと数式バーに =_xlfn.IFS(...) と表示され、計算結果がエラーになります。共有先のExcelバージョンに注意しましょう。
落とし穴④:SWITCH の条件順序は「一致したら終了」
SWITCH は最初に一致した値の結果を返し、以降は無視します。値が重複していた場合、2番目以降は絶対に返りません。意図しない重複がないか確認しましょう。
11 実務パターン集
パターン① 成績ランク判定(範囲条件)→ IFS が最適
理由:範囲条件(>=)を扱うため、IFS が最も素直。SWITCHでは TRUE テクニックが必要になり冗長。
パターン② 部署コード→部署名(完全一致)→ SWITCH が最適
理由:完全一致で、セル参照1回。IFS で書くと B2="S","営業部", B2="E","技術部", ... とB2を何度も書く羽目に。
パターン③ 曜日番号→曜日名(連番)→ CHOOSE が最適
理由:WEEKDAY の戻り値は 1〜7 の連番。CHOOSE の制約「1始まりの連番」にピッタリ。
パターン④ 商品マスタ参照(条件多数・変更多い)→ XLOOKUP が最適
理由:数十〜数百の条件を数式に書くのは非現実的。別シートの一覧表をXLOOKUPで参照するのが保守性・拡張性で最善。
パターン⑤ LET + IFネスト(重い計算の条件分岐)
理由:IFS/SWITCHは全引数を評価するため、IFネスト(短絡評価あり)にしてパフォーマンスを確保。LET で変数を定義し可読性も維持。
12 まとめ
| 場面 | 最適な関数 |
|---|---|
| 条件が1〜2個でシンプル | IF |
| 範囲条件(>=, <=)で多段分岐 | IFS |
| 完全一致で値を変換 | SWITCH |
| 1始まりの連番インデックスで分岐 | CHOOSE |
| 条件が多数・変更頻度が高い | XLOOKUP(別表参照) |
| 重い計算を条件分岐したい | LET + IFネスト(短絡評価を活かす) |
① 完全一致なら SWITCH、範囲条件なら IFS ─ これが基本の使い分け。
② 条件が増えてきたら数式の外(別表 + XLOOKUP)に出すことを検討。
③ IFS / SWITCH は全引数を評価する。重い計算がある場合は IF ネスト(短絡評価)を選ぶ。