Excelの入れ子(ネスト)IF関数:複数条件をすっきり整理する書き方
Excelで成績判定や歩合計算などの複数条件を処理する「入れ子(ネスト)IF関数」の作り方を解説。条件を書く順番の重要性や、より数式をシンプルに保てるIFS関数・対応表を使った代替案も紹介します。
著者 Ayoub Farid · · 5 分で読めます
1つのIF関数で分岐できる結果は2つまでです。しかし、成績判定や価格ランク、歩合給の計算など、3つ以上の結果に分けたい場面も多いはずです。そのようなときは、IF関数の中にもうひとつのIF関数を組み込みます。これがいわゆる「入れ子(ネスト)」構造のIF関数です。
具体例:成績の判定
| 点数 | 成績 |
|---|---|
| 90以上 | A |
| 80〜89 | B |
| 70〜79 | C |
| 70未満 | F |
=IF(B2>=90,"A",IF(B2>=80,"B",IF(B2>=70,"C","F")))
数式は左から右へと順に読み取られます。「もし90点以上ならA。そうでなければ、もし80点以上ならB。そうでなければ、もし70点以上ならC。それ以外はすべてF」という流れです。
条件を書く「順番」が重要な理由
Excelは条件を左から順に判定し、最初に当てはまった(TRUEになった)時点で処理を終了します。もし、基準の低いほうから先に書いてしまうとどうなるでしょうか。
=IF(B2>=70,"C",IF(B2>=80,"B","A"))
この場合、仮に「95点」であっても「70点以上」を満たしてしまうため、結果は「C」になってしまいます。そのため、数値が大きい順(または<記号を使って数値が小さい順)に並べて判定することが鉄則です。
カッコの数を数えるコツ
IF関数を1つ使うごとに、カッコを1組開きます。そのため、3段階の入れ子なら最後は ))) で閉じる必要があります。Excelの入力画面では対応するカッコが色分け表示されるので、目安にすると便利です。カッコの不整合エラーが表示されたときは、IF関数の個数と末尾の閉じカッコの数が合っているか確認しましょう。
よりスマートな方法1:IFS関数を使う
Excel 2019、Microsoft 365、またはGoogleスプレッドシートをお使いなら、IFS関数が利用できます。
=IFS(B2>=90,"A",B2>=80,"B",B2>=70,"C",TRUE,"F")
末尾の TRUE は、「それ以外のすべて」を受け止める役割を果たします。詳しい使い方はIFS関数の解説をご覧ください。
よりスマートな方法2:対応表(参照テーブル)を作る
条件の段階が多い場合は、あらかじめセル範囲に対応表を作っておき、それを検索して値を取得するほうが変更に強くなります。
| E | F | |
|---|---|---|
| 1 | 最小点数 | 成績 |
| 2 | 0 | F |
| 3 | 70 | C |
| 4 | 80 | B |
| 5 | 90 | A |
=VLOOKUP(B2,$E$2:$F$5,2,TRUE)
検索方法に TRUE(近似一致)を指定すると、VLOOKUP関数は対象の数値以下で最も近い基準値を探し出します。なお、この対応表は必ず「昇順」で並べておく必要があります。詳細はVLOOKUP関数の記事で解説しています。
具体例:歩合給のランク計算
=IF(B2>=10000,B2*8%,IF(B2>=5000,B2*5%,0))
この歩合率も直接数式に書き込まず、別のセルに入力して絶対参照($記号)で固定しておけば、将来パーセンテージが変わった際にも数式を1つずつ修正する手間が省けます。
実際に練習してみましょう
成績判定の数式作成は、就職・転職のExcelスキルテストでも頻出のテーマです。ぜひ本格的な成績計算表の作成にも挑戦してみてください。IF関数やネストによる条件分岐は、Cellioの新しい学習単元「条件分岐(Decisions)」でも基礎から詳しく学べます。
よくある質問
Excelで複数のIF条件を指定するにはどうすればよいですか?
IF関数を入れ子(ネスト)にします。前のIF関数の「偽の場合」の位置に次のIF関数を配置し、最も厳しい条件(数値が大きい順など)から順に判定するのが基本です。
ネストしたIF関数の代わりに使える方法はありますか?
新しいバージョンのExcelやGoogleスプレッドシートならIFS関数が使えます。また、条件の段階が多い場合は、対応表を作成してVLOOKUP関数やXLOOKUP関数で参照するほうが数式がすっきりします。
IF関数は何重までネストできますか?
Excelの仕様上は最大64レベルまで重ねられますが、管理や修正の手間を考えると、3〜4重を超える場合は別の関数や対応表への移行をおすすめします。
ネストしたIF関数で正しい判定結果が出ないのはなぜですか?
判定する条件の並び順が間違っている可能性が高いです。不等号の向きに合わせて、最も厳しい条件(大きい順、または小さい順)から先に書かれているか確認してください。