タグ: IF

  • IF関数の使い方|条件によって表示を変える基本の関数

    IFは、条件を満たすかどうかで表示を変える関数です。「80点以上なら合格、そうでなければ不合格」といった判定に使います。

    条件分岐のすべての出発点になる関数です。

    書式

    =IF(条件, 真の場合, 偽の場合)
    引数 内容
    条件 判定する式。結果が TRUEFALSE になるもの
    真の場合 条件を満たしたときに返す値
    偽の場合 満たさなかったときに返す値。省略すると 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件として数えられ、ISBLANKFALSE を返します。

    厳密に「何も入力されていない」を判定したいなら 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
    • - 数式が返す "" は「空白」ではない

    関連する関数

    • - IFS — 3段階以上の分岐を読みやすく書く
    • - IFERROR — エラー時の表示を制御する
    • - AND / OR — 複数条件を組み合わせる
    • - SWITCH — 値の一致で振り分ける
    • - 関数一覧に戻る