「条件を書いたつもりなのに結果がおかしい」「ネストしたら急にFALSEばかり返ってくる」——そんな場面で困ったことはありませんか?
原因のパターンはほぼ決まっています。
ネストの順番ミス・文字列と数値の型不一致・引用符の付け忘れ——
この3つが定番です。
この記事では、IF関数がうまくいかないときの症状から原因を絞り込み、再現性の高い解決手順を図解つきで解説します。
まず確認!IF関数がうまくいかない「症状」から原因を絞り込もう
IF関数のトラブルは、表示されている結果や画面の状態によって原因が大きく変わります。
| 症状 | 考えられる主な原因 | 参照先 |
|---|---|---|
| #NAME? エラーが出る | 引用符の付け忘れ・全角文字の混入 | 原因③ |
| #VALUE! エラーが出る | 引数にエラー値が含まれている | 原因③ |
| 数値条件なのに常にTRUE(合格)になる | 文字列と数値の型不一致 | 原因① |
| 1行目だけ正しく残りが全部おかしい | ネストの条件順序ミス | 原因② |
| 括弧の数が合わないエラーが出る | ネストの括弧閉じ忘れ | 原因② |
| 空白セルの判定が意図通りにならない | ISBLANKと””の使い分けミス | 原因④ |
IF関数の基本構文を最初に確認しよう
IF関数の書き方は次のとおりです。
=IF(論理式, 値が真の場合, 値が偽の場合)
この3つの引数のどこかにミスが潜んでいるケースがほとんど。次のセクションから原因別に見ていきましょう。
原因① 文字列と数値の型不一致|もっとも見落としやすいミス
IF関数で「数値の比較をしているのに常にTRUEになる」という症状のうち、最も気づきにくいのが文字列と数値の型不一致です。
見た目は数字でも、Excelが文字列として扱っているケースが少なくありません。
文字列が混入するとまさかの誤判定が起きる
具体例で確認してみましょう。セルA1に文字列の「60」が入っているとします。数値の60ではなく、テキストとしての”60″です。このとき次の数式を入れるとどうなるでしょうか。
=IF(A1>=70,"合格","不合格")
結果は——「合格」になってしまいます。
60は70未満なので「不合格」のはずですよね。
ところがExcelの仕様上、>・<・>=・<= などの数値比較では「テキスト文字列は数値よりも必ず大きい」と判定される仕組みになっています。
そのためA1が文字列であれば何点であっても、すべて「合格」と返してしまうわけです。
WebシステムやCSVから数字データを貼り付けた際にこの状態になりやすいため、外部データを使った集計表では要注意でしょう。
型不一致の確認方法と修正手順
文字列かどうかの一番速い確認方法は、セルの「左右揃え」を見ることです。
Excelは数値を自動で右揃えにする仕様なので、数字なのに左揃えのセルは文字列の可能性があります。
セルの左上に小さな緑の三角マーク(エラーインジケーター)が出ていれば、文字列のサインと見てよいでしょう。
書式を変えるだけではExcelが変更を認識しない場合があります。F2→Enterの再確定操作を必ずセットで行いましょう。
対象セルが大量にある場合は、列を選択してから「データ」タブ→「区切り位置」→そのまま「完了」をクリックする方法で一括変換できます。
数式そのものが表示されて計算されない症状が重なっている場合は、Excel数式が表示されるだけで計算されない原因と直し方も合わせて確認してみてください。
原因② ネストの順番ミス・括弧の閉じ忘れ
IF関数を入れ子(ネスト)にして複数の条件分岐を作る場合、「条件の順番」と「括弧の閉じ方」の2点でミスが起きやすくなります。
どちらも一見正しそうに見えるのが厄介なところです。
条件の順番を間違えると全体の結果がズレる
「90点以上:A、80点以上:B、70点以上:C、それ以外:D」という評価を例に考えましょう。
| 分類 | 数式の例 | 90点を入力した結果 |
|---|---|---|
| ❌ NG(小さい値から) | =IF(A1>=70,"C",IF(A1>=80,"B",IF(A1>=90,"A","D"))) |
「C」(誤り) |
| ✅ 正解(大きい値から) | =IF(A1>=90,"A",IF(A1>=80,"B",IF(A1>=70,"C","D"))) |
「A」(正しい) |
最初の条件に一致した時点でそこで処理が止まります。「>=70はC」を先に書いてしまうと、90点も80点も全員そこで引っかかってしまうわけです。
大きい値から順に条件を並べるのが鉄則と覚えておきましょう。
括弧の閉じ忘れを素早く見つけるコツ
ネストが3段以上になると、閉じ括弧「)))」の数が合わなくなるミスも頻発します。
括弧が足りないと「この数式には問題があります」というダイアログが表示されて入力が完了できません。
数式バーで入力中、Excelは括弧を色分けして対応関係を示してくれます。色が対応していない箇所があれば、そこに閉じ括弧が足りていないサインです。
また「数式」タブ→「数式の検証」を使うと、数式を1ステップずつ実行してどの部分で結果がズレているか追いかけられます。
ネストが複雑で原因がわからなくなったときは、迷わず活用してみてください。
原因③ 引用符の付け忘れ・全角文字の混入(#NAME?の正体)
「#NAME?エラーが出る」「論理式は合っているはずなのにエラーになる」——
このパターンには、引用符の付け忘れや全角文字の混入が関係していることがほとんどです。
文字列を比較するとき引用符(””)は必須
次の数式を見てください。
=IF(A1=合格,"○","×")
引用符なしで「合格」という文字列を書くと、Excelは「合格」を名前付き範囲か関数名として解釈しようとします。
それが見つからないため「#NAME?」エラーが発生するわけです。正しくは =IF(A1="合格","○","×") のように、比較したい文字列をダブルクォーテーションで囲む必要があります。
全角文字の混入も同じ#NAME?の原因になる
括弧やコンマが全角になっているだけで、Excelは数式として認識できません。日本語入力(IME)がオンのまま入力してしまうと、気づかないうちに全角文字が混入しがちです。
参照先のセルにすでに#VALUE!や#NAME?などのエラー値が入っているとIF関数もそのエラーを引き継いでしまいます。
この場合はIFERROR関数を組み合わせて対処するのが実務上の定石です。詳しくはExcelでエラーを消す!IFERROR関数の使い方と具体例をご覧ください。
エラーの種類の見分け方についてはExcel関数エラーの原因と直し方|#VALUE!・#REF!・#NAME?症状別逆引きも参考にしてみてください。
原因④ 空白セルの落とし穴とIFS関数|実務で役立つさらなる一手
定番の3ミスを押さえたうえで、実務でよくハマる2点を追加で紹介します。
どちらも「動いているように見えて実は誤判定している」パターンです。
ISBLANKと””の使い分けを知らないと誤動作する
「セルが空白なら処理をスキップしたい」という場面でよく使うのが次の2パターンです。
| 書き方 | 適切なシーン | 注意点 |
|---|---|---|
=IF(ISBLANK(A1),…) |
ユーザーが手入力するセルの空チェック | 数式が入っているセルはFALSEになる |
=IF(A1="",…) |
他の数式が空文字(“”)を返すかどうかのチェック | スペース1文字が入るとFALSEにならない |
スペースが1文字でも入っているとISBLANKではFALSEになります。スペースの混入が疑われる場合は =IF(TRIM(A1)="",…) のようにTRIM関数で除去してから判定するのがおすすめでしょう。
条件付き書式でIF関数を活用している場合も同様の誤判定が起きやすいため、Excel条件付き書式が反映されない原因と直し方もあわせてご確認ください。
ネスト地獄を解消するIFS関数(Excel 2019以降)
IFのネストが3段を超えると、数式が急速に読みにくくなります。
Excel 2019またはMicrosoft 365をお使いであれば、IFS関数(アイエフエス関数)への切り替えが有効な選択肢です。
先ほどの評価をIFSで書き直すと次のようになります。
=IFS(A1>=90,"A",A1>=80,"B",A1>=70,"C",TRUE,"D")
括弧を何重にも重ねる必要がなく、条件と結果のセットを横に並べていくだけです。
最後のTRUEは「上記すべての条件に当てはまらない場合」のデフォルト値を指定するために使います。
ネストと同様に、条件は厳しい順(大きい値から)に並べる必要がある点は変わりません。
ただし、IFS関数はExcel 2016以前の永続ライセンス版では使えません。社外に共有するファイルでは相手の環境を確認してから切り替えましょう。
Q&A【よくある疑問まとめ】
まとめ
IF関数がうまくいかない原因は、「文字列と数値の型不一致」「ネストの条件順序ミス・括弧の閉じ忘れ」「引用符の付け忘れ・全角文字の混入」の3パターンにほぼ集約されます。
症状を確認してから原因を絞り込み、上から順に試していく習慣をつければ、多くのケースは短時間で解決できるでしょう。
ネストが複雑になってきたと感じたら、IFS関数への切り替えも視野に入れてみてください。