IFは、条件を満たすかどうかで表示を変える関数です。「80点以上なら合格、そうでなければ不合格」といった判定に使います。
条件分岐のすべての出発点になる関数です。
書式
=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(条件, 真の場合, 偽の場合) - - 3つ目の引数を省略しない。不要なら
"" - - 複数条件は AND / OR と組み合わせる
- - ネストは厳しい順に並べる。4段を超えたら IFS
- - 数式が返す
""は「空白」ではない
コメントを残す