今回は、ExcelのIF関数を複数組み合わせる「ネスト(入れ子)」というテクニックを使用して、3つ以上の複雑な条件分岐を行う方法について紹介します。
IF関数のネスト(入れ子)とは何か
Excelで「もし〇〇ならA、そうでなければB」という単純な条件分岐を行う際、最もよく使われるのがIF関数です。
例えば、「テストの点数が80点以上なら『合格』、それ以外なら『不合格』」といった2択の判定であれば、1つのIF関数で簡単に処理できます。
しかし、実務においては「80点以上なら『A』、60点以上なら『B』、それ未満なら『C』」といったように、3つ以上の選択肢から結果を振り分けたい場面が頻繁に発生します。
このような複雑な条件分岐を実現するためには、1つのIF関数だけでは足りません。
そこで使われるのが「ネスト(入れ子)」という手法です。
ネストとは、ある関数の中(引数の一部)に、さらに別の関数を組み込んでマトリョーシカのような構造にすることです。
IF関数の中に別のIF関数を入れる(IF関数のネスト)ことで、「もし〇〇ならA、そうでなければ(さらに条件をチェックして)△△ならB、どちらでもなければC」という、多段階の複雑な判定を1つの数式だけで自動化できるようになります。
IF関数をネストする基本的な手順と書き方
3段階の評価(A、B、C)を自動で判定する数式を例に、IF関数をネストする具体的な書き方を解説します。
基本的なIF関数の構文のおさらい
まず、基本となるIF関数の構文は以下の通りです。
=IF(論理式, 真の場合, 偽の場合)
(例:=IF(A2>=80, “合格”, “不合格”))
この第3引数である「偽の場合(条件に当てはまらなかった場合)」の部分に、ただの文字ではなく「2つ目のIF関数」を丸ごと代入するのがネストの基本的な仕組みです。
3段階評価(A・B・C)の数式を組み立てる
セルA2に入力されている点数に対して、「80点以上ならA」「60点以上ならB」「60点未満ならC」という判定を行う数式を作ります。
1. 1つ目の条件を書く
まず、「80点以上ならA」という最初の条件を書きます。
=IF(A2>=80, "A",
ここまでは通常のIF関数と同じです。次に「そうでなかった場合(80点未満だった場合)」の処理を書きますが、ここではまだ「B」か「C」かが確定していません。
2. 2つ目のIF関数(ネスト)を組み込む
ここで、偽の場合の引数として、2つ目のIF関数を繋げます。
=IF(A2>=80, "A", IF(A2>=60, "B", "C"))
この数式の意味は、「もしA2が80以上なら『A』を表示して終了。もし80未満だった場合は、次のIF関数に進み、A2が60以上なら『B』、それも満たさない(60未満)なら『C』を表示する」という流れになります。
3. カッコの数に注意する
ネストを行う際、最も多いエラーの原因が「最後に閉じるカッコ『)』の数が足りない」ことです。
今回はIF関数を2つ使っているため、数式の最後にはカッコを2つ「))」続けて入力して、すべての関数を閉じる必要があります。
複数の条件を判定する際の重要なルール
IF関数をネストして複数の条件を設定する場合、Excelが数式を読み取る「順番」を理解していないと、意図した通りの判定になりません。
条件は「厳しいもの(狭い範囲)」から順に書く
ExcelのIF関数は、左から右へと順番に条件を判定し、「最初に条件を満たした時点で、その後の判定はすべて無視して終了する」という性質を持っています。
例えば、先ほどの数式の条件の順番を逆にして、「60点以上ならB」「80点以上ならA」という順で書いてしまったとします。
=IF(A2>=60, "B", IF(A2>=80, "A", "C"))
もしA2セルに「90点」と入力されていた場合、Excelは最初の条件である「60点以上か?」をチェックし、90点は60点以上なので「条件クリア」と判断して「B」を表示してしまいます。
本来なら「A」と判定されるべきなのに、緩い条件が先にきているため、後ろにある「80点以上」という厳しい条件までたどり着けないのです。
したがって、数値の大小でランク付けをする場合は、「以上(>=)」を使うなら数字が大きい順(厳しい順)に、「未満(<)」を使うなら数字が小さい順に条件を並べるのが鉄則です。
新しい関数「IFS関数」によるネストの解消
IF関数のネストは長年使われてきた必須テクニックですが、条件が4つ、5つと増えていくと数式が非常に長く複雑になり、「カッコの数が合わない」「どこで条件が分かれているのか読解できない」といったメンテナンス上の問題を引き起こします。
この問題を解決するために、新しいExcel(Office 365やExcel
2019以降)では、「IFS(イフス)関数」という非常に便利な関数が追加されました。
IFS関数を使ったスッキリとした書き方
IFS関数は、複数の条件をネストすることなく、横に並べて書いていくだけで多段階の判定を行ってくれる関数です。
構文:=IFS(条件1, 結果1, 条件2, 結果2, 条件3, 結果3…)
先ほどの「80点以上ならA、60点以上ならB、それ以外ならC」という条件をIFS関数で書くと以下のようになります。
=IFS(A2>=80, "A", A2>=60, "B", TRUE, "C")
IF関数を何度も書く必要がなくなり、カッコも最後に1つ閉じるだけで済むため、数式の可読性が劇的に向上します。
最後の「TRUE, “C”」という部分は、IFS関数特有の書き方で、「これまでのどの条件にも当てはまらなかった(TRUEになった)場合はCにする」という「それ以外」の処理を表しています。
自分が使っているExcelのバージョンがIFS関数に対応している場合は、複雑なネストは極力避け、IFS関数を使用することを強くおすすめします。
まとめ
Excelで3つ以上の複雑な条件分岐を行うための、「IF関数のネスト(入れ子)」の使い方について解説しました。
「=IF(条件1, 結果1, IF(条件2, 結果2,
結果3))」というように、偽の場合の引数の中に次のIF関数を組み込んでいくことで、多段階のランク付けや判定を自動化できます。
ネストを組み立てる際は、「左から順に判定される」という性質を理解し、必ず「厳しい条件(一番大きい数字など)」から順番に並べていくことが失敗しないための最大のポイントです。
また、最新のExcel環境であれば、ネストの複雑さを解消して直感的に書ける「IFS関数」に切り替えることも検討すべきです。
手作業によるランク分けや判定ミスを防ぎ、正確で自動化された効率的なデータ管理を実現するために、これらの複数条件の判定テクニックをぜひ習得してみてはいかがでしょうか。