🚀The world's best VBA AI has evolved. ExcelMaster is now an autonomous Agent.Read more →
Back to Blog

ExcelのIF関数 — Yes/Noの分かれ道は一つ、ネストはどこで止めるか

|

ExcelのIF関数 — Yes/Noの分かれ道は一つ、ネストはどこで止めるか

要点IF1つの Yes/No を問い、2つのうち1つの値を返します: =IF(logical_test, value_if_true, value_if_false)。誰もがハマる点が2つ。 まず、3つ目の引数を省くと、テストが偽のとき空白ではなく FALSE という 文字が返ります——空にしたいなら ,"") と書くこと。次に、IFのネストは2段で 止めるIF(…IF(…IF(…))) と縦に積んだピラミッドは読めず、括弧の数を 数える悪夢です。分岐が2つや3つを超えるなら、 IFS/SWITCH かルックアップ表に切り替えます。 条件はテストのAND()/OR() を使ってまとめる——ネストしない。 全バージョンで動作します。

=IF(B2>=60, "Pass", "Fail")
=IF(AND(B2>=60, C2="Yes"), "Pass", "Fail")

IFSUM の次にほとんどの人が覚える関数で、しかも一番なかなか「卒業」できない 関数です。見た目は単純——そして単一の IF本当に単純です——けれど、3つ目や 4つ目の結果が必要になり、正しい道具ではなくネストしたIFに手を伸ばした瞬間に やっかいが始まります。本記事は、IF を正直に保つための考え方の軸を据え、そのうえで 「どこで止めるか」を教える1つのルールを軸に組み立てます。

この記事で学べること

  • 考え方の軸:IF道の分かれ道が一つ、それ以上ではない
  • value_if_false を省くと FALSE という文字が返る理由(そして空白にする方法)
  • ネストしたIFのピラミッド——なぜ2段を超えると崩れるのか、代わりに何を使うか
  • ネストせずに AND / OR で条件をまとめる
  • 「IFが一度も動かない」を起こす意外な落とし穴:IF の文字列比較は大文字小文字を無視
  • 今どきの一手:1つの IF を列全体にスピルさせる

考え方の軸:道の分かれ道が一つ

IF は1つの分岐点です。1つの論理テスト——TRUEFALSE に解決される ものなら何でも——を評価し、その結果を2つの道のどちらかへ送ります。

' 「点数は60以上か? そうなら Pass、違うなら Fail」
=IF(B2>=60, "Pass", "Fail")

これが関数のすべてです。logical_test が問い、value_if_truevalue_if_false が2本の道。この絵を頭に置くと、たいていの「IFの問題」は、2方向用に作られた分岐点に 3つ・4つ・7つの結果を無理やり押し込もうとしているだけだとわかります。分かれ道には 出口が2つ。3つ目が必要になった瞬間、必要なのはより大きな IF ではなく—— 別の形です。

命を救うルール:2段を超えてネストしない

IF の中に IF を入れれば3つ目の結果が、さらに4つ目、5つ目が得られます。Excel は 最大64段まで許します。そのほとんどは良いアイデアではありません。

' 成績の3段階をネストしたIFで — すでに読みにくい
=IF(B2>=90, "A", IF(B2>=80, "B", IF(B2>=70, "C", "F")))

新しい段階を足すたびに、ネストが1段深くなりそして末尾に閉じ括弧が1つ増えます。 5つ6つにもなると、ある分岐がどこにあるかを見つけるのに括弧を数え、編集のたびに 括弧の対応が崩れる危険があり、読まされるチームメイトはスタック全体を頭の中で 巻き戻さなければなりません。情報はすべてそこにある——けれど構造があなたに 逆らってきます。

判断はきっぱりしています。ネストは2段が限界、それを超えたら道具を変える。 成績のような順序のある数値の帯なら、IFS はピラミッドなしで 上から下へ素直に読めます。離散値の対応付け(コード→ラベル)なら SWITCH、あるいは増えたり変わったりするものには—— こちらの方が良い——XLOOKUP を使った小さなルックアップ表 の方がはるかに保守しやすい。ネストしたIFの長い連鎖は賢さではありません。次に ファイルを開いた人へ手渡す保守コストの請求書です。

FALSEの落とし穴:3つ目の引数は実務上「省略可」ではない

value_if_false は技術的には省略できます。省くと Excel は空白を返さず—— ブール値の**FALSE** をそのまま返します。

=IF(B2>=60, "Pass")        ' 点数40 -> セルには FALSE と表示される
=IF(B2>=60, "Pass", "")    ' 点数40 -> セルは空白

これが「なぜセルに FALSE と出るの?」という最も多い質問の正体で、対策は習慣です。 常に3つ目の引数を与える。 何も出したくないなら "" で明示します。ただし "" には注意点が——それは空文字列であって本当に空のセルではないので、後続の ISBLANKFALSE を読み、COUNTA はそれを数えます。後の数式がそのセルに 本当に「数値または空」であることを求めるなら、"" ではなく NA() か数値を返します。

条件は AND / OR でまとめる——そのためにネストしない

ネストしたIFの大半は、誰かが2つの条件を同時に真にしたかったのに間違った形に 手を伸ばした、という理由だけで存在しています。そのためにネストはしません—— logical_testANDOR を使ってテストをまとめます。

' ネスト(動くが、読みにくく編集しにくい)
=IF(B2>=60, IF(C2="Yes", "Pass", "Fail"), "Fail")

' AND — きれいなテストひとつ
=IF(AND(B2>=60, C2="Yes"), "Pass", "Fail")

AND(…) はすべてのテストが通ったときだけ TRUEOR(…) はどれか1つが通れば TRUE。これらは2段のネストを1つの読みやすい分岐点に畳み込みます。ネストは、本当に 別々の下流の問いのために取っておく——「この2つが両方とも真でなければ」のためでは ありません。それは AND の仕事で、SUMIFSFILTER でも使うのと同じ論理です。

大文字小文字を無視する落とし穴:「IFが一度も動かない」

IF= 比較は大文字小文字を無視します。"Yes" = "yes" は Excel にとって TRUE——たいていはそれで都合がいいのですが、そうでないときもあります。

=IF(A2="OK", 1, 0)              ' "OK"、"ok"、"Ok" — すべてに一致
=IF(EXACT(A2,"OK"), 1, 0)       ' 大文字小文字まで含めて "OK" だけに一致

IDid のようなコード、あるいはチェックサムなど、本当に大文字小文字を区別する テストが必要なときは、EXACT() で包みます。(これは VBA の鏡像です。VBA では = が既定で大文字小文字を区別します——VBA UCase/LCase を 参照。)Excel がどちら側を既定にしているかを知っておくと、「値は同じに見えるのに IFが反応しない」という困惑から救われます。

今どきの一手:1つのIFを列にスピルさせる

今の Excel では、IF はテストに配列を受け取り、各行に1つずつ結果をスピルします ——ドラッグも、数式の下方向コピーも不要です。

=IF(Score>=60, "Pass", "Fail")     ' Score は範囲 -> 行ごとに結果が1つ、スピルする

テストを列全体(Table の列や # のスピル範囲)に向けると、1つのセルから結果の 一覧全体が生まれ、ソースが伸びるたびに再計算されます。長い IF の中で同じ部分式を 繰り返すなら、LET で一度名前を付けて Excel に1回だけ 計算させると、読みやすく、大きなシートでも速くなります。

判断:IF か IFS か、それともルックアップ表か

真の二択——1つの問い、2つの答え——には素の IF を使います。順序のある帯 (成績、ティア、しきい値)になった瞬間に IFS へ移ります。それが表す表のように 読めるからです。値をラベルへ対応付ける(ステータスコード→説明、地域→担当者) なら、短く固定のリストには SWITCH、リストが長い・時とともに変わるなら本物の ルックアップ表に対する XLOOKUP を使います。腕の見せどころは、より大きなIFを書くこと ではありません——自分の問題が実はこの3つの形のどれなのかを、早い段階で見抜くこと です。

ExcelMaster の使いどころ

実務のロジックは、たいてい数式の構文ではなくビジネスの言葉で語られます——60点以上で かつ提出した人は合格、それ以外は不合格ExcelMaster はその一文を正しい形に 変えます——それで足りるなら AND を伴う単一の IF、問題が分かれ道を超えていれば きれいな IFS/ルックアップ。あなたは判断を述べるだけ。半年後に括弧を数える悪夢に ならない構造を、こちらが選びます。

よくある質問

IFの数式が FALSE と表示されるのはなぜ?

3つ目の引数を省いたからです。=IF(test, value_if_true) はテストが偽のとき、 そのまま FALSE を返します。明示的に value_if_false を加えてください——空白なら ,"")、ラベルなら , "No"

ExcelでIFは何段までネストできる?

最大64段——ですが、読みやすさはそのはるか手前で崩れます。ネストは多くても2段まで。 それ以上の分岐には IFSSWITCH、ルックアップ表を使います。

IFを複数条件で書くには?

テストを ANDOR で論理テストの中にまとめ、ネストしません: =IF(AND(B2>=60, C2="Yes"), "Pass", "Fail")AND はすべてのテストが真であること、 OR はどれか1つが真であることを必要とします。

ExcelのIFは大文字小文字を区別する?

しません。IF(A2="ok", …) は "OK"、"Ok"、"ok" を等しく一致させます。大文字小文字を 区別する比較なら EXACT で包みます:=IF(EXACT(A2,"OK"), …)

IF の代わりに IFS を使うべきなのはいつ?

順序のある結果が3つ以上あるとき(成績の帯など)です。IFS は各テストと結果を上から 下へ並べ、ネストも末尾の括弧もないので、読み書きがはるかに楽になります。

検証環境

検証環境: Excel 365(Windows 11)— 最終確認 2026-06-25。

関連ガイド: ExcelのIFS & SWITCH関数 · ExcelのIFERROR関数 · ExcelのSUMIFS関数 · ExcelのFILTER関数