ExcelのIF関数で「80点以上ならA、60点以上ならB、それ以外はC」といった判定を組んだのに、出てきた結果を見ると全部「B」になっている。数式のつづりを何度見直しても間違いは見つからない。カッコの数も合っている。それなのに結果がおかしい。こうなると自分のExcelが壊れたように思えてきますが、壊れてはいません。
先に結論を書きます。数式が合っているのに結果がおかしいとき、原因のほとんどは「条件を書く順序」です。IF関数は書いた条件を上から順に見ていき、最初に当てはまったところで止まります。だから条件を小さいほうから書いてしまうと、本来Aになるはずの高い点数も途中で拾われてしまい、Aが一度も出てこないという状態になります。この記事では、実機のExcel(バージョン16.0 / Office 2019 買い切り版)で同じ数式を実際に計算させ、その結果を数値のまま載せます。IF関数の入れ子、AND・OR、IFS関数の3つを、同じ点数に対して並べて計算し、どこでどう結果が変わるのかを比べていきます。
条件の順序を間違えると上位の判定が出てこない
まずこの記事の中心になる実測結果からお見せします。点数を 95、80、75、60、45 の5つ用意し、書く順序だけを入れ替えた2本の数式を、実機のExcelで実際に計算させました。判定したい内容は「80点以上ならA、60点以上ならB、それ未満はC」で、どちらの数式も条件そのものは同じです。違うのは書いた順番だけです。

| 数式(条件は同じ・順序だけ違う) | 95 | 80 | 75 | 60 | 45 |
|---|---|---|---|---|---|
正しい順序=IF(A2>=80,"A",IF(A2>=60,"B","C")) |
A | A | B | B | C |
順序を逆にした=IF(A2>=60,"B",IF(A2>=80,"A","C")) |
B | B | B | B | C |
下の行を見てください。順序を逆にしただけで、95点も80点も「B」になり、「A」という判定が一度も出てきません。数式は正常に計算され、それらしい文字が返ってきます。これが一番やっかいなところです。公式のサポートページも、この種の間違いについて『多くの場合、このようなエラーは悪影響を与えるまで気付かれないので、これは非常に問題になる可能性があります。』と書いています。気づかないまま表が完成してしまう、という点まで公式が警告しているわけです。
=IF(A2>=60,"B",IF(A2>=80,"A","C")) という数式は、日本語にすると「60点以上ならB、そうでなければ、80点以上ならA、それ以外はC」と読めます。文章として読むと一見おかしくありません。しかしExcelはこの通りに上から実行するので、95点はまず「60点以上か」という最初の質問に当てはまってしまい、そこで「B」と決まります。その先に書いてある「80点以上ならA」までは、そもそもたどり着かないのです。

ここから導かれる鉄則はひとつです。条件は必ず「大きい(厳しい)ほうから」順に書く。上の表の1行目のように、80以上を先に、60以上を後に書けば、95点はまず「80点以上か」で拾われて正しくAになります。同じことをご自分のExcelで確かめたい場合は、次の手順で再現できます。
- A列のA2からA6に、上から順に 95、80、75、60、45 と入力します
- B2に
=IF(A2>=80,"A",IF(A2>=60,"B","C"))と入力してEnterを押します - C2に
=IF(A2>=60,"B",IF(A2>=80,"A","C"))と入力してEnterを押します - B2とC2を選んで、下のB6・C6まで数式をコピーします
- B列にはAが2つ出るのに、C列にはAが1つも出ないことを見比べます
IF関数が上から順に止まる仕組み
なぜ順序でここまで変わるのか。理由は、IF関数の動き方そのものにあります。IF関数は条件を「全部見比べて一番よく当てはまるものを選ぶ」ような賢い動きはしません。上から順に1つずつ質問し、最初に「はい」になった時点でそこで確定し、残りは見に行きません。人間の感覚だと「95点なんだから、Aに決まっているだろう」と思いますが、Excelはそういう気の利かせ方をしてくれません。書いた順番が、そのまま判定の優先順位になります。
この動きは、マイクロソフト公式のサポートページ「IF 関数 – 入れ子になった式と問題の回避」にはっきり書かれています。公式は、売上に応じて販売手数料の率を決める数式を例に取り上げ、条件を小さい金額のほうから書いてしまった場合に何が起きるかを、こう説明しています。『たとえば、12,500 ドルの収益があるとします。IF ステートメントは 5,000 ドルを超え、そこで停止するため、10% を返します。』
「そこで停止する」というのがIF関数のすべてです。12,500ドルは本来もっと高い手数料率になるはずなのに、最初に「5,000ドル超」という緩い条件に引っかかった時点で計算が止まり、そこに書いてある10%が返ってしまう。当方が実機で確かめた「95点なのにBになる」という現象は、これとまったく同じ仕組みです。公式はこの数式を『ロジックの順序が正しくない手数料シナリオの例』と呼んでいます。数式の書き間違いではなく、順序の間違いだという整理です。
ついでに知っておくと役に立つ数字があります。公式ページには『Excel では最大 64 個の異なる IF 関数を入れ子にすることができますが、これを行うことをお勧めすることはできません。』と書かれています。上限は64個ですが、公式自身が勧めていません。その理由も『複数の IF ステートメントを正しく構築し、ロジックが各条件を経由し、最後まで正しく計算されるようにするには、膨大な思考が必要になります。』と説明されています。入れ子は増やせるが、増やすほど順序の管理が破綻しやすくなるということです。実務では3つか4つの分岐で止めておくのが無難です。
複数条件の書き方3パターンをそれぞれの実測結果で比べる
複数の条件を判定する方法は、大きく3つあります。IF関数の入れ子、AND関数・OR関数との組み合わせ、そしてIFS関数です。用途がそれぞれ違うので、同じ5つの点数に対して実機で計算した結果を見ながら整理します。
入れ子のIF関数は段階的なランク分けに使う
先ほどの =IF(A2>=80,"A",IF(A2>=60,"B","C")) がこれです。「上から順に振り分けて、最後に残ったものはこれ」という段階的なランク分けに向いています。最後の引数に「それ以外」の値を書いておけるので、どの条件にも当てはまらない値があっても必ず何かが返ってきます。この点は後で出てくるIFS関数との重要な違いになります。
ANDとORは範囲や例外の指定に使う
AND関数とOR関数は、ランク分けではなく「複数の条件を1つの判定にまとめる」ときに使います。公式ページ「EXCEL での AND 関数、OR 関数、および NOT 関数での IF の使用」では、複数条件をテストする場面として『すべての条件を True または False ( AND ) にする必要がある場合』と『1 つの条件のみを True または False ( OR ) にする必要がある場合』が挙げられています。実機で計算した結果は次のとおりです。
| 数式 | 95 | 80 | 75 | 60 | 45 |
|---|---|---|---|---|---|
AND(両方とも満たす)=IF(AND(A2>=60,A2<80),"合格(B)","それ以外") |
それ以外 | それ以外 | 合格(B) | 合格(B) | それ以外 |
OR(どちらか一方でも満たす)=IF(OR(A2>=80,A2<50),"特別対応","通常") |
特別対応 | 特別対応 | 通常 | 通常 | 特別対応 |
ANDの行では、75点と60点だけが「合格(B)」になっています。A2>=60 と A2<80 の両方を同時に満たす点数だけが拾われるためです。95点と80点は「60以上」は満たしていますが「80未満」を満たさないので外れます。ここが実務でよく使う形で、「〜以上かつ〜未満」という範囲の指定はANDで書きます。IF関数の入れ子で範囲を表現しようとして混乱している場合、ANDに置き換えると数式が一気に読みやすくなります。
ORの行はその逆です。95点と80点(80以上)に加えて、45点(50未満)まで「特別対応」になっています。どれか1つでも当てはまれば拾われるので、「成績が飛び抜けて良い人と、逆に手厚くフォローしたい人を、まとめて抜き出す」といった使い方ができます。上位と下位という離れた条件を1本の数式でまとめられるのがORの強みです。
条件をいくつまで並べられるかも公式に書かれています。『AND 関数と OR 関数では、最大 255 個の個別の条件をサポートできますが、複雑な入れ子になった数式はビルド、テスト、保守が非常に困難になる可能性があるため、いくつかの条件を超えて使用することはお勧めしません。』とあり、あわせて『NOT 関数では、1 つの条件しか使用できません。』とも書かれています。上限は255個と大きいのですが、ここでも公式は増やしすぎないよう釘を刺しています。
IFS関数の落とし穴
IFS関数は、入れ子のIF関数を書かずに条件を並べられる関数です。公式も『IFS は、複数のネストした IF ステートメントに置き換えることができるため、複数の条件を読み込むのがより簡単です。』と説明していて、たしかにカッコの数に悩まされずに済みます。実機のExcelでも問題なく計算できました。ただし、そのまま使うと引っかかる落とし穴があります。実測結果を見てください。

| 数式 | 95 | 80 | 75 | 60 | 45 |
|---|---|---|---|---|---|
=IFS(A2>=80,"A",A2>=60,"B",A2<60,"C") |
A | A | B | B | C |
最後の条件を書き忘れた=IFS(A2>=80,"A",A2>=60,"B") |
A | A | B | B | #N/A |
下の行の45点だけが #N/A になっています。IFS関数は「どの条件にも当てはまらなかった場合」の受け皿を自分で書かないと、エラーになります。45点は「80以上」でも「60以上」でもないので、返す値が決まらず、エラーが表示されます。公式ページにもそのまま『TRUE 条件が見つからない場合、この関数は #N/A エラーを返します。』と書かれています。
入れ子のIF関数なら、最後の「それ以外」の場所に “C” を書くのが自然な流れなので、この抜けは起きにくいのです。ところがIFSは条件と値をひたすら並べていく書き方なので、最後の受け皿を書き忘れても数式としては成立してしまいます。カッコが少なくて書きやすいぶん、この一手間を落としやすい関数だと考えておいてください。
受け皿の書き方は2通りあります。上の表の1行目のように A2<60,"C" と最後の条件を明示的に書く方法と、公式が案内している方法です。公式には『既定の結果を指定するには、最後の logical_test の引数に、TRUE を入力します。』とあり、最後の条件に文字どおり TRUE と書くと、そこまで残ったものすべてを受け止められます。=IFS(A2>=80,"A",A2>=60,"B",TRUE,"C") という形です。条件の書き漏らしが怖い場合は、こちらのほうが安全です。
なおIFSも、順序の話はIF関数と同じです。公式は『IFS 関数は、1 つ以上の条件が満たされているかどうかをチェックして、最初の TRUE 条件に対応する値を返します。』と説明しており、やはり最初に当てはまった条件で決まります。IFSに書き換えたからといって、順序の問題から解放されるわけではありません。
- 最後に「それ以外」の受け皿があるか(無いと #N/A になる)
- 条件が大きいほうから順に並んでいるか(IFSも最初に当てはまった条件で止まる)
もう1つ数字を添えておくと、公式には『IFS 関数では、最大 127 個のさまざまな条件をテストすることができます。』と書かれています。入れ子のIFの上限64個より多いのですが、公式は続けて『ただし、IF または IFS ステートメントであまりにも多くの条件をネストすることはお勧めしません。』とも言っています。条件を並べられる数が増えても、順序を正しく管理する難しさは変わらないという話です。
どれを使えばいいかの判断
3つの方法を、目的別に整理します。
| やりたいこと | 使う関数 | 注意する点 |
|---|---|---|
| 点数や金額を 段階的にランク分けする |
IFの入れ子 | 大きい条件から順に書く カッコの数が合っているか |
| 「〜以上かつ〜未満」の 範囲を判定する |
IF+AND | 両方満たしたときだけ 拾われる |
| 離れた複数の条件を まとめて拾う |
IF+OR | 1つでも満たせば 拾われる |
| 分岐が多くて カッコが読みにくい |
IFS | 最後の受け皿がないと #N/A になる バージョンの確認が必要 |
迷ったときは、入れ子のIF関数を大きい条件から順に書く形が一番つぶしが効きます。理由は2つあります。1つは「それ以外」を必ず書く形になるのでエラーが出にくいこと。もう1つがバージョンの問題です。

IFS関数の公式ページの「適用先」に挙げられているのは、Excel for Microsoft 365、Excel for Microsoft 365 for Mac、Excel 2024、Excel 2024 for Mac、Excel 2021、Excel 2021 for Mac、Excel 2019 の7つです。この一覧に Excel 2016 は含まれていません。当方の作業用パソコンのExcel(バージョン16.0 / Office 2019 買い切り版)では =IFS(...) は問題なく計算できましたが、ご自分の環境や、ファイルを渡す相手の環境で使えるかどうかは、公式ページの「適用先」で必ず確認してください。
一方、IF関数の公式ページと、AND・OR・NOT関数の公式ページは、どちらも「適用先」に Excel 2016 や Excel Web App まで含まれています。相手のバージョンがわからないファイルを配るなら、入れ子のIFのほうが事故が起きません。書きやすさよりも、確実に動く書き方を選ぶほうが後で困らずに済みます。
よくある質問
数式にエラーは出ていないのに結果が全部同じになります
条件を書く順序を疑ってください。小さい条件を先に書いていると、大きい値もそこで拾われて止まってしまい、上位の判定が一度も出てきません。当方の実機でも、条件を逆に書いた数式では95点も80点も「B」になり、「A」は1つも出ませんでした。エラーとして表示されないぶん気づきにくいのですが、数式を大きい条件から書き直すと直ります。
IFS関数で #N/A と表示されます
どの条件にも当てはまらない値がある状態です。公式にも『TRUE 条件が見つからない場合、この関数は #N/A エラーを返します。』とあります。最後に「それ以外」を受け止める条件を足してください。最後の条件に TRUE と書いて既定の結果を指定する方法が公式で案内されています。
IF関数はいくつまで入れ子にできますか
公式には『Excel では最大 64 個の異なる IF 関数を入れ子にすることができますが、これを行うことをお勧めすることはできません。』とあります。上限は64個ですが、公式自身が勧めていません。分岐が多くて読みにくくなってきたら、別の関数に切り替えるのも手です。公式も『ほとんどの場合、IF 関数を使用して複雑な数式を作成する代わりに、VLOOKUP 関数を使用できます。』として、判定表を別に用意して引く形を案内しています。
まとめ
ExcelのIF関数で複数の条件を判定するとき、結果がおかしくなる原因の多くは、数式のつづりではなく条件を書いた順序にあります。IF関数は上から順に評価して、最初に当てはまった条件でそこで止まり、その先は見に行きません。公式も『IF ステートメントは 5,000 ドルを超え、そこで停止するため、10% を返します。』という例でこの動きを説明しています。実機で確かめたところ、条件を逆に書いた数式では95点も80点も「B」になり、「A」が一度も出てこないという結果になりました。エラーとして表示されないぶん、気づかないまま表が仕上がってしまうのが怖いところです。条件は必ず大きいほうから順に書いてください。範囲を指定したいときはAND、離れた条件をまとめて拾いたいときはORを使います。IFS関数を使うなら、最後に「それ以外」の受け皿を必ず用意してください。無いと #N/A になります。
数式を人から引き継いだものの、どの条件がどの順で動いているのか読み解けない、直したいが壊すのが怖い、という相談は少なくありません。運営者は元情シス職として、従業員1000名以上の規模での運用経験が10年以上あります。今まさに結果の合わない数式の前で止まっている方は、数式と実際に出ている結果を送っていただければ、どこの順序が原因かを一緒に読み解きます。
出典・引用サイト
最終確認日 2026年7月14日/記事作成 uri uri


コメント