見出し画像

ExcelでIF文を何重にもネストしてはいけない理由――IFS・SWITCH・CHOOSEで読める数式に直す


こんな数式を見たことがあるはずです。

=IF(A2="東京",B2*1.1,IF(A2="大阪",B2*1.05,IF(A2="名古屋",B2*1.03,IF(A2="福岡",B2*1.02,B2))))

これは「地域ごとに係数を変える」というシンプルなロジックです。でも読めません。修正も困難です。

IFのネストは「動いているからOK」ではありません。この数式は保守不能な爆弾です。


ネストしたIFが引き起こす3つの問題

問題① どこが対応しているかわからない

IFは「条件が真のとき」と「偽のとき」の2つの分岐を持ちます。ネストが深くなるほど、どのIFのTRUE/FALSEがどこに対応しているかを追うのが困難になります。

4重ネストになると、カッコの対応を目で追うだけで数分かかることがあります。

問題② 条件を追加・変更するたびに全体を書き直す必要がある

「札幌」を追加したい。そのためにはネスト全体の構造を把握して、正しい位置に挿入する必要があります。

条件が増えるほど、変更コストは指数的に増えます。

問題③ 閉じカッコの数がわからなくなる

4重ネストなら閉じカッコは4つ必要です。うっかり3つで送信すると「数式エラー」。数えながら入力する作業は、ミスが出やすい。


解決策①:IFS関数で横並びに書く(Excel 2019以降)

=IFS(
    A2="東京", B2*1.1,
    A2="大阪",  B2*1.05,
    A2="名古屋",B2*1.03,
    A2="福岡",  B2*1.02,
    TRUE,       B2
)

IFSは「条件1, 値1, 条件2, 値2…」と横並びに書けます。ネストがないため、条件の追加・削除が簡単です。最後の`TRUE, B2`は「どれにも当てはまらない場合のデフォルト値」を意味します。

問題② 条件を追加・変更するたびに全体を書き直す必要がある

IFSなら1行追加するだけです。ネスト構造を壊す心配がありません。


解決策②:SWITCH関数で完全一致に対応する(Excel 2019以降)

=SWITCH(A2,
    "東京",  B2*1.1,
    "大阪",  B2*1.05,
    "名古屋",B2*1.03,
    "福岡",  B2*1.02,
    B2
)

SWITCH関数は「この値が何かによって分岐する」パターンに最適です。`SWITCH(判定対象, 値1, 結果1, 値2, 結果2…, デフォルト)`の形で書きます。

IFSよりさらに短く書けます。ただし、完全一致のみ対応(「以上」「以下」などの比較条件には使えない)。


解決策③:CHOOSE関数で番号ベースの分岐をシンプルにする

=CHOOSE(C2, "低", "中", "高")

C2が1なら「低」、2なら「中」、3なら「高」を返します。

数値インデックスで分岐できる場合はCHOOSEが最も簡潔です。優先度や評価ランクなど、数値で管理しているデータとの相性が良い。


まとめ:IF関数の使い分け

| 状況 | 使うべき関数 |
|------|------------|
| 2分岐(AかBか) | IF |
| 3分岐以上、比較条件あり | IFS |
| 3分岐以上、完全一致のみ | SWITCH |
| 数値インデックスで分岐 | CHOOSE |

「IFを重ねれば何でもできる」は正しいです。でも「できる」と「読める・直せる」は別の話です。IFS・SWITCH・CHOOSEを使い分けるだけで、数式の保守コストは大きく下がります。


もしこの記事が役に立ったら、スキ♡をポチっとしていただけると励みになります。
フォローしていただくと、同じような実務直結のExcel記事をお届けします。


IT実務ラボ|「なぜそうするか」の理由まで、丁寧に。

いいなと思ったら応援しよう!