※本ページにはプロモーション(広告)が含まれています
Excelで作業中、IF関数がうまく動かない・思い通りに判定されない・エラーが出るといった問題に直面したことはありませんか?
IF関数はExcelの中でも最もよく使われる関数のひとつですが、見た目はシンプルでも、使い方を少し間違えるだけで正しく動かなくなります。「数字を入力しているのにFALSEになる」「ネストが深くなると意味がわからなくなる」「#VALUE!エラーが出て困っている」という声は非常に多いです。
この記事では、IF関数がうまく動かない・エラーになる原因を7つのパターンに分けて解説し、それぞれの対処法を具体的な数式例とともにわかりやすく説明します。初心者から中級者まで、今すぐ問題を解決できるガイドです。
この記事でわかること
- IF関数の基本構文と仕組みの再確認
- 比較演算子の正しい使い方(=、<>、>=の落とし穴)
- 数値と文字列の型の違いが引き起こすエラーの対処法
- 空白セルを正しく判定する方法(ISBLANKと””の違い)
- ネストが複雑になる場合のIFS関数への切り替え方
- AND・OR関数とIF関数の組み合わせ方
- #VALUE!・#NAME?エラーの原因と解決策
- 循環参照エラーの対処法
- 実用的な活用例(成績判定・在庫管理など)
IF関数の基本構文を確認しよう
まず基本に立ち返りましょう。IF関数の構文は以下の通りです。
=IF(論理式, 真の場合の値, 偽の場合の値)
- 論理式:TRUEまたはFALSEを返す条件式(例:A1>=80)
- 真の場合の値:論理式がTRUEのときに返す値や文字列
- 偽の場合の値:論理式がFALSEのときに返す値や文字列(省略可、省略するとFALSEが返る)
基本的な使用例
| 数式 | 説明 | 結果の例 |
|---|---|---|
=IF(A1>=60,"合格","不合格") |
A1が60以上なら「合格」、そうでなければ「不合格」 | 合格 または 不合格 |
=IF(B1="","未入力","入力済み") |
B1が空白なら「未入力」、値があれば「入力済み」 | 未入力 または 入力済み |
=IF(C1<>0,D1/C1,0) |
C1がゼロでなければD1をC1で割る、ゼロなら0を返す | 計算値 または 0 |
この基本をおさえたうえで、なぜうまく動かないのかを原因別に見ていきましょう。
原因1:比較演算子の使い方が間違っている
IF関数で最もよくあるミスのひとつが、比較演算子の誤った使い方です。
Excelで使える比較演算子一覧
| 演算子 | 意味 | 正しい例 | よくあるミス |
|---|---|---|---|
= |
等しい | A1=100 |
A1==100(==は使えない) |
<> |
等しくない | A1<>0 |
A1!=0(!=は使えない) |
>= |
以上 | A1>=80 |
A1=>80(順番が逆) |
<= |
以下 | A1<=50 |
A1=<50(順番が逆) |
> |
より大きい | A1>0 |
A1 > 0(スペースは問題なし) |
< |
より小さい | A1<100 |
— |
よくある間違い:「=>」と書いてしまう
=IF(A1=>80,"合格","不合格") と書くと、Excelはエラーを返します。正しくは =IF(A1>=80,"合格","不合格") です。「以上」は「>=」、「以下」は「<=」の順番と覚えておきましょう。
文字列の比較では大文字・小文字を区別しない
Excelの=演算子は大文字・小文字を区別しません。A1="abc"とA1="ABC"はどちらもTRUEになります。大文字・小文字を厳密に区別したい場合は、EXACT関数を使います。
=IF(EXACT(A1,"ABC"),"大文字一致","不一致")
原因2:数値と文字列の型の違いによるエラー
「セルに数字が入っているのに、IF関数の判定がおかしい」という問題の多くは、数値(数字)と文字列(テキスト)の型の混在が原因です。
数値と文字列の違い
Excelでは「100」という数値と「100」という文字列は別物です。見た目は同じでも、セルの左寄り・右寄りで判断できます。
- 数値:セル内で右寄りに表示される
- 文字列:セル内で左寄りに表示される(セルの左上に緑の三角マークが出ることもある)
具体的な問題例
CSVからデータを取り込んだとき、数値のはずのデータが文字列として認識されていることがあります。この場合:
=IF(A1>=80,"合格","不合格")
A1が文字列の「85」だと、数値との比較で予期しない結果になることがあります。
対処法1:VALUE関数で数値に変換する
=IF(VALUE(A1)>=80,"合格","不合格")
対処法2:数値変換の一括操作
- 空のセルに「1」を入力してコピー
- 文字列数値の範囲を選択
- 右クリック →「形式を選択して貼り付け」→「乗算」を選択
- これで文字列が数値に変換される
対処法3:TEXT関数で文字列に統一する
逆に数値を文字列として比較したい場合は、TEXT関数で統一します。
=IF(TEXT(A1,"0")="100","一致","不一致")
文字列として保存された日付の問題
日付の比較でも同様の問題が起きます。文字列の「2026/01/01」と日付シリアル値は別物のため、DATEVALUE関数で変換します。
=IF(A1>=DATEVALUE("2026/01/01"),"2026年以降","2025年以前")
原因3:空白セルの判定ミス(ISBLANKと””の違い)
「空白セルの場合は処理をスキップしたい」というケースは非常に多いですが、ISBLANKと””(空文字)の使い分けを間違えると正しく動きません。
ISBLANKと””の違い
| 方法 | TRUEになる条件 | 注意点 |
|---|---|---|
ISBLANK(A1) |
セルが完全に空(何も入力されていない) | スペースが入っているとFALSEになる |
A1="" |
セルが空 OR 空文字列(=””)が入っている | 他の数式が””を返しているセルもTRUEになる |
使い分けの基準
- ユーザーが手入力するセルの空チェック:
ISBLANKが確実 - 他の数式の結果が空文字かどうかのチェック:
=""が適切
実用例:未入力セルをスキップして計算する
=IF(ISBLANK(A1),"",A1*1.1)
これでA1が空の場合は何も表示せず、入力がある場合のみ1.1倍した値を表示します。
スペースが入っていて空に見えるセルへの対処
見た目は空でも実際はスペースが入っているセルは、ISBLANKでFALSEになります。TRIM関数で前後のスペースを除去してから判定します。
=IF(TRIM(A1)="","空白","入力あり")
原因4:ネストが複雑で動かない場合(IFS関数の活用)
IF関数は入れ子(ネスト)にすることで複数条件の分岐ができますが、ネストが深くなると数式が複雑になりすぎてエラーが発生しやすくなります。
ネストIF関数の問題点
=IF(A1>=90,"優",IF(A1>=80,"良",IF(A1>=70,"可",IF(A1>=60,"及第","不可"))))
このように4段階のネストになると:
- 括弧の数が合わなくなりやすい
- どの条件がどの結果に対応しているか読みにくい
- 修正時にミスが生じやすい
Excel 2019以降はIFS関数を使おう
IFS関数を使うと同じ内容をシンプルに書けます。
=IFS(A1>=90,"優",A1>=80,"良",A1>=70,"可",A1>=60,"及第",TRUE,"不可")
ポイント:最後の条件にTRUE,"不可"を追加することで、どの条件にも一致しない場合の処理を定義します。これを忘れると、条件に一致しない場合に#N/Aエラーが発生します。
IFS関数が使えないバージョンでの対処法
Excel 2016以前でIFS関数が使えない場合は、CHOOSE関数やSWITCH関数(2019以降)を活用するか、ヘルパー列を使って条件を分けることを検討しましょう。
ネストIFを書く際のコツ
- 条件を大きい順(または小さい順)に並べる:>=90から始めて下げていく
- 括弧の対応を色で確認:Excelは括弧をカラーコードで表示する
- F2キーで数式を編集モードにして括弧をハイライト確認
原因5:AND・OR関数との組み合わせミス
「AかつB」「AまたはB」という複合条件を作るとき、AND関数・OR関数をIF関数と組み合わせます。ここでも間違いが起きやすいポイントがあります。
AND関数との組み合わせ(AかつB)
=IF(AND(A1>=60,B1>=60),"合格","不合格")
A1とB1の両方が60以上の場合のみ「合格」になります。
OR関数との組み合わせ(AまたはB)
=IF(OR(A1>=90,B1>=90),"特優先","通常")
A1またはB1のどちらか一方が90以上なら「特優先」になります。
よくある間違い:AND/ORを使わずに書こうとする
Excelでは以下のような書き方はできません:
=IF(A1>=60 AND B1>=60,"合格","不合格") ← エラー
必ずAND関数・OR関数を使って以下のように書く必要があります:
=IF(AND(A1>=60,B1>=60),"合格","不合格") ← 正しい
NOT関数との組み合わせ(〜でない)
=IF(NOT(A1="キャンセル"),"処理対象","スキップ")
複合条件の実用例:在庫アラート
=IF(AND(B1<=10,C1="販売中"),"在庫補充が必要","問題なし")
在庫数(B1)が10以下かつステータス(C1)が「販売中」の場合にアラートを表示します。
原因6:#VALUE!・#NAME?エラーの原因と対処法
IF関数を使っていると、#VALUE!や#NAME?といったエラーが表示されることがあります。それぞれの原因と解決策を解説します。
#VALUE!エラーの原因
| 原因 | 例 | 対処法 |
|---|---|---|
| 参照先セルにエラーが含まれている | A1が#VALUE!のときIF(A1>0…) | IFERROR関数で包む |
| 文字列と数値を計算しようとしている | A1=”abc”のときA1+1 | ISNUMBER関数で型チェック |
| 配列の大きさが合っていない | 配列数式でサイズ不一致 | 配列の範囲を統一する |
IFERROR関数でエラーを回避する
IF関数の中で計算が行われ、その計算がエラーになる可能性がある場合は、IFERROR関数を使います。
=IFERROR(IF(A1/B1>1,"超過","範囲内"),"B1が0のためエラー")
これでB1が0のとき(ゼロ除算エラー)でも、「B1が0のためエラー」と表示され、シートが壊れません。
#NAME?エラーの原因
#NAME?エラーはExcelが関数名や名前を認識できないときに発生します。
- 関数名のスペルミス:
ISBLNAK(正:ISBLANK)など - 全角スペース・全角文字の混入:全角の「=」や「,」を使っている
- 名前付き範囲の削除:定義していた名前が削除されている
- IFS関数をサポートしていないバージョンで使用:Excel 2016以前では#NAME?になる
#NAME?エラーの対処法
- 数式バーで関数名のスペルを確認する
- 数式内に全角文字が混入していないか確認する(特に日本語IMEがオンのまま入力した場合)
- 「数式」タブ→「名前の管理」で使用している名前が存在するか確認する
- ExcelのバージョンがIFS関数に対応しているか確認する(2019以降・Microsoft 365が必要)
原因7:循環参照によるエラー
循環参照とは、数式が直接または間接的に自分自身のセルを参照している状態です。IF関数の中で自分のセルを参照してしまうと発生します。
循環参照の例
C1セルに以下の数式を入力した場合:
=IF(C1>0,"正","負または0")
C1自身がC1を参照しているため、循環参照エラーになります。
循環参照の見つけ方
- 「数式」タブ→「エラーチェック」→「循環参照」をクリック
- 循環参照のあるセルが表示されるのでクリックして移動
- ステータスバーの左下に「循環参照:C1」のように表示される
循環参照の対処法
- 数式の参照先を別のセルに変更する:自分自身を参照しないよう数式を修正する
- 意図的な循環参照の場合は「反復計算」を有効にする:「ファイル」→「オプション」→「数式」→「反復計算を行う」にチェック(通常は非推奨)
実用例1:成績判定システム
学校や研修での成績判定に使える実践的な数式を紹介します。
5段階評価(IFS関数使用)
=IFS(A2>=90,"S",A2>=80,"A",A2>=70,"B",A2>=60,"C",A2>=0,"D",TRUE,"入力エラー")
合否判定+理由付き(AND・IF組み合わせ)
=IF(AND(B2>=60,C2>=60,D2>=60),"合格(全科目合格)",IF(OR(B2<60,C2<60),"不合格(筆記不足)","不合格(実技不足)"))
B2が筆記・C2が実技・D2が面接の点数として、不合格の原因まで表示します。
成績一覧の例
| 氏名 | 点数 | 評価(IFS) | 合否 |
|---|---|---|---|
| 田中 太郎 | 92 | S | 合格 |
| 鈴木 花子 | 75 | B | 合格 |
| 佐藤 次郎 | 55 | D | 不合格 |
実用例2:在庫管理システム
在庫数に応じて発注アラートを表示するシステムをIF関数で作れます。
在庫ステータス判定
=IFS(B2=0,"【緊急】在庫切れ",B2<=5,"【警告】要発注",B2<=20,"【注意】在庫少",TRUE,"在庫あり")
発注数量の自動計算
=IF(B2<=C2,C2*2-B2,0)
B2が現在の在庫数、C2が最低在庫数。在庫が最低在庫数以下になったとき、最低在庫数の2倍から現在の在庫数を引いた量を発注数として表示します。
仕入れ単価の変動対応
=IF(D2>=100,E2*0.9,IF(D2>=50,E2*0.95,E2))
D2が発注数量、E2が定価。100個以上で10%引き、50個以上で5%引きの仕入れ価格を自動計算します。
IF vs IFS vs SWITCH:どれを使うべきか比較
| 関数 | 対応バージョン | 得意なケース | 苦手なケース | 最大分岐数 |
|---|---|---|---|---|
| IF | 全バージョン | シンプルな2分岐 | 多段階分岐(読みにくい) | 64段階まで(非推奨) |
| IFS | 2019以降・Microsoft 365 | 複数の条件式が必要な多段階分岐 | 完全一致の分岐(SWITCHの方が簡潔) | 127条件まで |
| SWITCH | 2019以降・Microsoft 365 | 1つの値に対して複数の完全一致チェック | 範囲条件(>=80など)の分岐 | 126パターンまで |
| CHOOSE | 全バージョン | インデックス番号で分岐 | 条件式による分岐 | 254個まで |
SWITCH関数の使用例(完全一致の分岐に便利)
=SWITCH(A1,"月","Monday","火","Tuesday","水","Wednesday","その他")
A1の値が「月」なら”Monday”、「火」なら”Tuesday”…どれにも一致しなければ”その他”を返します。IFのネストで書くよりはるかにシンプルです。
Excelの参考書籍・学習リソース
IF関数を含むExcel関数を体系的に学びたい場合は、専門書籍も活用しましょう。
-
Excel 最強の教科書(SBクリエイティブ)
ビジネスで本当に使える関数と操作を体系的に解説。IF関数の応用事例も豊富。
Amazon.co.jp で確認する → -
できるExcel 関数 Office 365/2019/2016/2013対応(インプレス)
関数の使い方を図解でわかりやすく解説。IFS・SWITCH関数にも対応。
Amazon.co.jp で確認する →
よくある質問(FAQ)
Q1. IF関数でTRUEまたはFALSEがそのまま表示されてしまいます。
A. 第2引数(真の場合)または第3引数(偽の場合)を省略していることが原因です。=IF(A1>=60)のように引数を省略すると、TRUEまたはFALSEがそのまま返ります。=IF(A1>=60,"合格","不合格")のように戻り値を明示しましょう。
Q2. IF関数の中に別のIF関数を入れると括弧が合わなくなります。どうすればよいですか?
A. ネストのIF関数が複雑になる場合は、IFS関数への書き換えを強くお勧めします。それでもネストを使う場合は、数式バーで入力中にExcelが括弧を色分けしてくれる機能を活用してください。また、数式を書く前に条件の一覧を紙に書き出すと整理しやすくなります。
Q3. セルの値が0のとき、空白のときを同じように処理したいのですが、うまくできません。
A. ORを使って複合条件にします。=IF(OR(A1=0,A1=""),"処理なし","処理あり")とすることで、A1が0または空白のどちらの場合でも「処理なし」と判定できます。
Q4. 日付を使った判定がうまく動きません。「A1>=”2026/01/01″」と書いても正しく動かないです。
A. 日付を文字列として比較しているためです。正しくは=IF(A1>=DATE(2026,1,1),"2026年以降","2025年以前")のように、DATE関数を使って日付シリアル値として比較します。またはDATEVALUE("2026/01/01")を使っても同じ結果が得られます。
Q5. IFS関数を使ったら「どの条件にも一致しない場合に#N/Aエラーが出ます。
A. IFS関数はどの条件にも一致しない場合に#N/Aを返します。これを防ぐには最後の条件にTRUE,"その他の値"を追加してください。=IFS(A1>=90,"S",A1>=80,"A",TRUE,"B以下")のようにすることで、どの条件にも当てはまらない場合のデフォルト値を設定できます。
まとめ:IF関数トラブルシューティングのチェックリスト
IF関数がうまく動かない場合は、以下のチェックリストを順番に確認してみてください。
| チェック項目 | 確認方法 | 対処法 |
|---|---|---|
| 比較演算子は正しいか | >=・<>の順番を確認 | 順番を修正(=>→>=) |
| 数値と文字列が混在していないか | セルの表示位置(左右)を確認 | VALUE関数で数値変換 |
| 空白判定は正しいか | ISBLANKと=””の使い分けを確認 | 目的に合った関数を使う |
| ネストが深すぎないか | 括弧が4つ以上あれば要注意 | IFS関数に書き換える |
| AND・ORは関数形式になっているか | ANDが関数になっているか確認 | AND(条件1,条件2)形式に修正 |
| #VALUE!エラーが発生していないか | 参照セルにエラーがないか確認 | IFERRORで包む |
| 循環参照が発生していないか | 「数式」→「エラーチェック」→「循環参照」 | 参照先を別セルに変更 |
IF関数は一見シンプルに見えますが、型の問題・演算子の誤り・ネストの複雑さなど、落とし穴が多い関数でもあります。この記事で紹介した原因と対処法を参考に、ひとつずつ確認していけば必ず解決できます。
Excelをより快適に使いこなしたい方は、IFS関数・SWITCH関数・IFERROR関数など、IF関数と組み合わせて使える関数も積極的に活用してみてください。
minto.tech スマホ(Android/iPhone)・PC(Mac/Windows)の便利情報をお届け! 月間アクセス160万PV!スマートフォン、タブレット、パソコン、地デジに関する素朴な疑問や、困ったこと、ノウハウ、コツなどが満載のお助け記事サイトはこちら!