条件
IF関数の使い方・読み方
読み方:IF は「イフ」と読みます。(一般的な読み方です。公式に読み仮名の定めはありません)
IFは、条件を満たすかどうかで表示を変える関数です。「80点以上なら合格、そうでなければ不合格」といった判定に使います。
このページの中身(26項目)
この記事の書式と対応環境の出どころ(2026-08-26 確認)
- Google スプレッドシート ヘルプ:公式の書式は
IF(論理式, TRUE値, FALSE値)
https://support.google.com/docs/answer/3093364 - Microsoft サポート:IF 関数
https://support.microsoft.com/ja-jp/excel/functions/if-function
関数の仕様は追加・変更されることがあります。書式が合わないときは、上の公式ページで最新をご確認ください。
条件分岐のすべての出発点になる関数です。

書式
=IF(条件, 真の場合, 偽の場合)
| 引数 | 内容 |
|---|---|
| 条件 | 判定する式。結果が TRUE か FALSE になるもの |
| 真の場合 | 条件を満たしたときに返す値 |
| 偽の場合 | 満たさなかったときに返す値。省略すると FALSE が表示される |
3つ目の引数は省略しないでください
省略すると条件を満たさないセルに FALSE という文字が並びます。何も表示したくないなら "" を指定します。
基本の使い方
A2に点数が入っているとします。
=IF(A2 >= 80, "合格", "不合格")
A2が90なら「合格」、70なら「不合格」が返ります。
文字列を返すときはダブルクォートで囲む必要があります。数値や数式ならクォートは不要です。
=IF(A2 >= 80, A2 * 1.1, A2)

条件に使える比較演算子
| 演算子 | 意味 | 例 |
|---|---|---|
= | 等しい | A2 = "東京" |
<> | 等しくない | A2 <> "" |
> | より大きい | A2 > 100 |
>= | 以上 | A2 >= 100 |
< | 未満 | A2 < 100 |
<= | 以下 | A2 <= 100 |
「以上」と「より大きい」の取り違えは実務で頻発します。境界の値をテストデータに必ず入れて確認してください。 80点ちょうどが合格になるか、を実際に見るのが確実です。
複数の条件を組み合わせる
かつ(すべて満たす)
AND を使います。
=IF(AND(A2 >= 80, B2 >= 80), "合格", "不合格")
または(どれかを満たす)
OR を使います。
=IF(OR(A2 >= 80, B2 >= 80), "合格", "不合格")
否定
NOT で反転できますが、<> を使うほうが読みやすいことが多いです。
=IF(A2 <> "東京", "地方", "首都圏")
3段階以上に分ける(ネスト)
IFの中にIFを入れると、段階を増やせます。
=IF(A2 >= 90, "A", IF(A2 >= 80, "B", IF(A2 >= 70, "C", "D")))
上から順に判定され、最初に当てはまったところで止まります
そのため、条件は厳しい順(大きい順)に並べる必要があります。逆順にすると全部が最初の条件に吸い込まれます。
ただし、3段階を超えたら IFS に切り替えるほうが読みやすくなります。
=IFS(A2 >= 90, "A", A2 >= 80, "B", A2 >= 70, "C", TRUE, "D")
括弧の対応を数えなくて済むぶん、後から直すのが格段に楽です。
空白の判定でつまずくところ
「空欄なら何も表示しない」はよく使う書き方です。
=IF(A2 = "", "", A2 * 1.1)
ここで注意したいのが、数式で "" を返したセルは「空白」ではないという点です。見た目は空欄ですが、COUNTA では1件として数えられ、ISBLANK は FALSE を返します。
厳密に「何も入力されていない」を判定したいなら ISBLANK を使います。
=IF(ISBLANK(A2), "未入力", "入力済み")
見た目の空欄をまとめて扱いたいなら A2 = "" のほうが実用的です。どちらが必要かを意識して選んでください。
エラーを条件にしたいとき
「エラーだったら別の値を出す」には、IFではなく IFERROR を使います。
=IFERROR(A2 / B2, "計算できません")
IFで書こうとすると ISERROR との組み合わせになり、同じ計算を2回書くことになります。IFERROR一択です。
よくある失敗
数式が長くなって直せなくなる
ネストが4段を超えたら IFS に。判定表が固定なら、別シートに対応表を作って XLOOKUP で引くほうが保守しやすくなります。条件が増えたときに表へ1行足すだけで済みます。
文字列の比較で大文字小文字が区別されない
IFの = は大文字小文字を区別しません。"abc" = "ABC" は TRUE です。区別したいなら EXACT を使います。
=IF(EXACT(A2, "ABC"), "一致", "不一致")
数値と文字列を比べている
"100"(文字列)と 100(数値)は等しくありません。他システムから貼り付けたデータで起きがちです。VALUE() で数値化するか、貼り付け時に形式を揃えてください。
実例:売上表に判定列を足す
実務でIFを使う場面のほとんどは「表に判定の列を1本足す」という形です。具体的に組み立ててみます。
売上表があり、A列に担当者、B列に売上金額が入っているとします。ここに「目標達成かどうか」を出すC列を足します。目標は50万円とします。
C2に入れる数式はこうなります。
=IF($B2>=500000, "達成", "未達")
これを下にコピーすれば全行に判定が付きます。B列にドル記号を付けていないのは、行ごとに違う金額を見たいからです。列だけ固定しているのは、右にコピーしても列がずれないようにするためです。
次に、目標額を数式の中に直接書くのをやめます。数式に数字を埋め込むと、目標が変わったときに全行を直すことになります。 目標額をE1などのセルに置き、そこを参照してください。
=IF($B2>=$E$1, "達成", "未達")
E1を書き換えるだけで全行の判定が変わります。この「数字を数式に埋め込まない」という習慣は、IFに限らずすべての数式で効いてきます。 後から仕様が変わったときの手戻りがまったく違います。
さらに、達成率も出したいとします。単純に割ると未入力の行でエラーになるので、先に空白を判定します。
=IF($B2="", "", $B2/$E$1)
判定と計算を1本の数式に詰め込みすぎないこと
列を分けたほうが、あとから見たときに何をしているか分かります。他人に引き継ぐファイルなら、なおさらです。
条件式の書き方でつまずくところ
数値と文字列の比較
=IF(A1="100", "○", "×") と =IF(A1=100, "○", "×") は別物です。前者は文字列の「100」との比較、後者は数値の100との比較です。セルに数値が入っているのに文字列と比べると、常に「×」になります。
他のシステムから貼り付けたデータは、見た目が数値でも文字列として入っていることがよくあります。左寄せで表示されていたら文字列の可能性が高いと考えてください。
大文字と小文字
=IF(A1="OK", ...) は、A1が「ok」でも「Ok」でも真になります。比較は大文字と小文字を区別しません。 区別したい場合はEXACT関数を使います。
=IF(EXACT(A1,"OK"), "○", "×")
部分一致で判定したい
IFの条件式では部分一致ができません。「〜を含む」で判定したい場合は、COUNTIFやSEARCHと組み合わせます。
=IF(COUNTIF(A1,"*東京*")>0, "対象", "対象外")
COUNTIFはワイルドカードが使えるため、単独のセルに対して使うとこういう判定ができます。
範囲を条件にしてしまう
=IF(A1:A10>100, ...) のように範囲を渡すと、環境によって結果が変わります。IFの条件には1つの値を渡してください。 範囲全体を判定したいならANDやORを使います。
ネストが深くなったときの考え方
条件が3つ4つと増えると、IFの入れ子は急速に読めなくなります。目安として、入れ子が3段を超えたら別の書き方を検討してください。
IFSに置き換える
条件と結果を平らに並べられるので、読みやすさが大きく変わります。→ IFS関数の使い方
対応表を作ってVLOOKUPで引く
判定の基準が「◯以上◯未満」の区分なら、表にしたほうが管理が楽です。基準が変わったときも表を直すだけで済みます。
SWITCHを使う
値が完全一致で振り分けられる場合は、こちらのほうが簡潔です。→ SWITCH関数の使い方
列を分ける
一度に判定しようとせず、途中の判定を別の列に出してから最終判定をする。数式は長くなりませんし、どこで間違えたかも追いやすくなります。
判定の結果に何を返すか
IFが返すのは文字列だけではありません。数値、数式、空白、別のセルの参照、何でも返せます。
=IF($B2>=$E$1, $B2*0.05, 0)
これは達成していれば報奨金を計算し、していなければ0を返します。
=IF($B2>=$E$1, VLOOKUP($A2,マスタ!$A:$C,3,FALSE), "")
条件を満たすときだけ検索する、という書き方もできます。無駄な検索を減らせるので、行数が多い表では速度にも効きます。
空白を返したいときは "" を使いますが、これは「空文字」であって「空セル」ではありません。 ISBLANKでは空と判定されず、COUNTAでは数えられます。この違いでつまずくことが多いので、覚えておいてください。→ ISBLANK関数の使い方
判定の列を設計する
表に判定の列を足すとき、何を返すかで後の使い勝手が変わります。
真偽値を返す設計
そのまま条件付き書式の条件に使え、合計すれば件数になります。集計との相性がもっとも良い形です。人が読む表では分かりにくいので、表示用には別の列を用意します。
文字列を返す設計
「達成」「未達」のように人が読める形です。分かりやすい反面、集計には使いにくくなります。件数を数えるには条件付きの件数関数が必要です。
数値を返す設計
区分を数値で表す形です。並べ替えの基準に使えます。表示は対応表で名称に変換します。
空文字を返す設計
条件に合わないときは何も表示しない形です。見た目はすっきりしますが、件数を数えるときに混乱の元になります。
実務では、集計用の真偽値の列と、表示用の文字列の列を分けるのが確実です。列が増えますが、それぞれの用途に最適な形を持てます。作業列は非表示にできます。
どれか一つにまとめる場合は、そのファイルで何を優先するかで決めてください。集計が主なら真偽値、人が見るのが主なら文字列です。
条件式を読みやすく書く
条件式の書き方には、読みやすさの差があります。同じ動作でも、書き方次第で理解の速度が変わります。
比較する向きを揃えてください
基準値を右に置くか左に置くか、表の中で統一します。「売上が基準以上」と「基準が売上以下」は同じ意味ですが、混在すると読みにくくなります。
否定を重ねないでください
「空欄でない、かつ、対象外でない」より、「入力済み、かつ、対象」のほうが読めます。条件そのものを書き換えられないか検討してください。
基準値はセルに置いてください
数式に埋め込むと、何を基準にしているのかが数式を読まないと分かりません。セルに置いて名前を付ければ、数式を見ただけで意図が伝わります。
長い条件は分けてください
三つ以上の条件を一本に書くより、作業列に分けたほうが読めます。どの条件で外れたのかも分かります。
改行を使ってください
数式バーの中で改行できます。条件と結果で行を分けると、構造が見えます。
これらは動作に影響しません。しかし、三か月後に自分が読むとき、あるいは他人が引き継ぐときに、大きな差になります。
そのまま使える型を5つ
空欄のときだけ何もしない
=IF($A2="","",$A2*1.1)
未入力の行に 0 や #VALUE! が並ぶのを防ぎます。集計表では、この一行があるかないかで見た目が大きく変わります。
エラーのときだけ代わりの値を出す
=IFERROR($A2/$B2,"")
IF(ISERROR(...)) と書くより短く、計算も一度で済みます。ただし、原因を追いたい段階では外してください。エラーを隠すと、間違いに気づけなくなります。
条件を2つ重ねる
=IF(AND($A2>=100,$B2="済"),"対象","")
AND は全部満たすとき、OR はどれか満たすときです。3つ以上でも同じ書き方で増やせます。
数値の区分に使う
=IF($A2>=80,"A",IF($A2>=60,"B","C"))
入れ子は上から順に判定されます。大きいほうから書かないと、すべて最初の条件に吸われます。区分が4つ以上になるなら IFS のほうが読めます。
別の表を参照して分岐する
=IF(COUNTIF($F$2:$F$100,$A2)>0,"登録済","未登録")
VLOOKUP を IFERROR で包むより、存在確認だけなら COUNTIF のほうが軽くなります。
条件式でつまずく場所
文字列は必ず引用符で囲む
=IF(A2=済,...) は動きません。=IF(A2="済",...) と書きます。引用符を忘れると、済 という名前の範囲を探しにいきます。
空欄の判定は二通りある
=IF(A2="",...) は、空欄と「長さ0の文字列」の両方を拾います。数式の結果として "" が入っているセルも含まれます。純粋な空欄だけを判定したいなら ISBLANK を使ってください。
数値と文字列を比べない
"100" と 100 は一致しません。片方が他のシステムから貼り付けたデータなら、型が違う可能性があります。ISNUMBER で確認できます。
大小の比較は文字列にも効く
文字列どうしの比較は、文字コード順になります。意図した順序と違うことがあるため、数値で判定できるならそちらにしてください。
比較演算子の書き方
| 意味 | 書き方 |
|---|---|
| 等しい | = |
| 等しくない | <> |
| 以上 | >= |
| 以下 | <= |
| より大きい | > |
| より小さい | < |
入れ子が深くなったときの対処
まず IFS に置き換える
条件が3つ以上並ぶなら、IFS のほうが読みやすくなります。閉じ括弧の数を数える必要がなくなります。
対応表を作って引く
条件が5つ以上あるなら、数式に書かずに表を作ってください。VLOOKUP か XLOOKUP で引く形にすれば、条件が増えても数式を触らずに済みます。
作業列に分ける
長い数式を一つ書くより、途中の判定を作業列に出したほうが、間違いを見つけやすくなります。完成後に列を非表示にすれば見た目も崩れません。
意図をメモに残す
複雑な条件は、数か月後の自分にも読めません。シートのどこかに、何をどう判定しているかを一行書いておいてください。
よくある使い方の実例
未入力チェックの列を作る
=IF(COUNTBLANK($A2:$E2)>0,"未入力あり","")
行のどこかが空欄なら印を付けます。入力漏れのある行だけをフィルタで抽出できます。
期限が過ぎたものに印を付ける
=IF($C2<TODAY(),"期限超過","")
条件付き書式と組み合わせると、色でも分かるようになります。
前月と比べて増減を出す
=IF($B2>$C2,"増",IF($B2<$C2,"減","同"))
数値をそのまま見るより、増減の記号があるほうが読み手に伝わります。
複数条件で担当を振り分ける
=IF($A2="東京","第1課",IF($A2="大阪","第2課","本社"))
拠点が増える可能性があるなら、対応表を作って引く形にしてください。数式を毎回直すことになります。
「条件」の関数を全体から見る
条件に含まれる関数を、全体から見ておきます。同じカテゴリの関数は、つまずく場所も似ています。この記事のほかに14本あります。
このカテゴリで共通するつまずき
文字列は引用符で囲む必要があります。囲み忘れが最も多い間違いです。1つで理解した内容は、同じカテゴリの他の関数にもそのまま使えます。
どれを使うかの決め方
分岐が3つを超えたら、数式ではなく対応表を引く形にしてください。関数の一覧を眺めて選ぼうとすると、どれも当てはまるように見えて決まりません。
迷ったときは
→ 全関数の一覧 に目的別の索引があります。
数式を書く前の手順
手順を分けると、どこで詰まっているかが分かります。
1. 出したい結果を一文で書く
「何を、どの条件で、どんな形で出したいか」。この一文が書ければ、関数はほぼ決まります。書けないなら、まだ要件が固まっていません。
2. 元データの型を確認する
文字列は引用符で囲む必要があります。囲み忘れが最も多い間違いです。=ISNUMBER(A2) で数値かどうかを確認できます。見た目が同じでも、数値と文字列は別物です。
3. 空欄と0の扱いを決める
未入力なのか、実績が0なのか。表の意味が変わります。どちらとして扱うかを決めてから書いてください。
4. 条件の数を数える
分岐が3つを超えたら、数式ではなく対応表を引く形にしてください。将来条件が増える可能性があるなら、最初から複数条件に対応する形にしてください。
5. 共有先の環境を確認する
新しい関数は、古い環境で開くとエラーになります。社外に渡すファイルでは、この一点で選択肢が変わります。
6. 1行だけ書いて確認する
全行にコピーする前に、1行分の結果が正しいかを見てください。間違ったまま広げると、直す手間が増えます。
どの関数でも共通する確認
以下は、どの関数を使っていても同じです。
参照を固定したか
下方向にコピーする数式では、動いてはいけない参照を固定します。上の数行だけ見て判断しないでください。ずれは下のほうで表面化します。
範囲の行数が揃っているか
複数の範囲を渡す関数では、行数がずれると結果が狂います。エラーにならず値が返るため、気づきにくい種類の間違いです。
型が揃っているか
=ISNUMBER(A2)
数値として入っているかを判定します。システムから書き出したデータでは、これが原因のことが多くあります。
前後に空白が入っていないか
=LEN(A2)&" / "&LEN(TRIM(A2))
数が違えば、余分な空白が入っています。見た目では判別できません。
別の方法で検算したか
同じ数字を別の関数でも出して、突き合わせてください。1つの結果だけを見ても、正しいかどうかは判断できません。
最終行まで確認したか
一番下までスクロールして、結果を見てください。途中から値が変わっていないかを確認します。
引き継ぐときに残すこと
数式は動いていても、意図は残りません。渡す前に、次の点をシート内にメモしてください。3分で終わります。
何を出している数式か
一行で構いません。読めば分かると思っても、数か月後の自分には分かりません。
どの表を参照しているか
参照先のシート名と、更新の担当。別ファイルなら、その場所も書いてください。
該当しないときの扱い
空欄にしているのか、文言を出しているのか、エラーのまま残しているのか。書いていないと、受け取った側は空欄をデータなしと読みます。
触ってはいけない場所
列を挿入すると壊れる数式がある場合、必ず書き残してください。この一行があるだけで、引き継ぎ後の事故が大きく減ります。
使った関数の対応環境
新しい関数を使っている場合、古い環境では開けません。共有の範囲が広がる可能性があるなら、明記してください。
確定した期間は値にする
締めた月の集計は、値貼り付けにしてください。参照元を消しても壊れなくなり、ファイルも軽くなります。
このサイトの収録状況
全201本を、次のカテゴリに分けて収録しています。
| カテゴリ | 記事数 |
|---|---|
| 目的別 | 51本 |
| 集計 | 47本 |
| 文字列 | 31本 |
| 日付 | 19本 |
| 検索・参照 | 15本 |
| 条件 | 15本 ←この記事 |
| 機能 | 12本 |
| 配列・抽出 | 10本 |
| 関数一覧 | 1本 |
探し方の順番
関数名が分かっているなら検索窓から。やりたいことだけ決まっているなら「目的別」から。近い関数を比べたいなら、同じカテゴリの一覧から入ってください。
記事の構成
どの記事も、書式・実例・つまずきやすいところ・似た関数との使い分けを同じ順番で並べています。1本読めば、他の記事も同じ場所を探せます。
よくある質問
Q. 条件を2つ以上にしたいのですが
ANDまたはORで包みます。=IF(AND(A1>100, B1="東京"), "○", "×") のように書きます。→ AND関数 / OR関数
Q. 「〜以外」を判定したいときは
<> を使います。=IF(A1<>"", "入力あり", "未入力") のように書きます。NOT関数を使う方法もありますが、<> のほうが短く済みます。
Q. エラーが出ているセルを判定したいのですが
IFの条件式ではエラーを普通に比較できません。ISERROR や IFERROR を使ってください。→ IFERROR関数の使い方
Q. 結果を色で変えたいのですが
IFでは色は変えられません。条件付き書式を使ってください。→ 条件付き書式で行全体に色を付ける方法
Q. 空白なのに「未達」と出ます
空白のセルは0として扱われるため、>= の判定では基準を下回ります。先に空白を判定して除外してください。
Q. TRUE / FALSE をそのまま出したいのですが
=A1>=100 と書くだけで TRUE / FALSE が返ります。IFで包む必要はありません。
Q. IFの結果で計算するとエラーになります
IFが文字列を返している場合、それを使って計算するとエラーになります。計算に使う列と表示用の列は分けてください。
Q. 数式が長くなりすぎて読めません
改行を入れられます。数式バーで Alt+Enter(スプレッドシートは Ctrl+Enter)を押すと、途中で改行できます。動作は変わりません。
まとめ
- 書式は
=IF(条件, 真の場合, 偽の場合) - 3つ目の引数を省略しない。不要なら
"" - 複数条件は AND / OR と組み合わせる
- ネストは厳しい順に並べる。4段を超えたら IFS
- 数式が返す
""は「空白」ではない