ExcelのIF関数の使い方|基本から複数条件・ネストまで実例で解説

スポンサーリンク

「条件によって表示する値を変えたい」。Excelを使っていると、こんな場面に何度も出くわしますよね。売上が目標を超えたら「達成」、超えなかったら「未達」と表示したい。そんなときに使うのがIF関数です。

IF関数はExcelの中でも使用頻度トップクラスの関数。でも「ネストがよくわからない」「AND・ORとの組み合わせが難しい」と感じている方も多いのではないでしょうか。

この記事では、IF関数の使い方を基本から解説します。複数条件の指定やネストの書き方まで、実務で使える例を交えてわかりやすく説明します。

IF関数とは?

ExcelのIF関数は、条件に応じて処理を分岐させる関数です。「もし〜なら○○、そうでなければ△△」というロジックを数式で表現できます。

読み方は「イフ関数」。英語の「if(もし)」がそのまま関数名になっています。Excelでは「論理関数」に分類されており、AND関数・OR関数などと同じグループです。

たとえば「点数が70以上なら合格、それ以外は不合格」。こうした条件判定を自動化できるのがIF関数の役割です。数値・文字列・日付など、あらゆるデータに対して条件判定できます。

手動で一件ずつ確認・入力する作業をIF関数で自動化すれば、データが変わっても再計算が自動で行われます。入力ミスも防げるため、実務の表作りには欠かせない関数です。Excelの全バージョンで使えるので、ぜひ覚えておきましょう。

IF関数の書き方(構文と引数)

基本構文

IF関数の構文はとてもシンプルです。

=IF(論理式, 値が真の場合, 値が偽の場合)

日本語に置き換えると「もし○○なら△△、そうでなければ□□」という形です。

引数の説明

IF関数の引数は3つあります。

引数必須/省略可説明
論理式必須TRUE/FALSEを判定する条件式
値が真の場合必須論理式がTRUEのときに返す値
値が偽の場合省略可論理式がFALSEのときに返す値

3つ目の「値が偽の場合」は省略できます。ただし、省略するとFALSEという文字が表示されます。空白にしたい場合は "" と書いてください。この違いは意外と見落としやすいポイントです。

IF関数の基本的な使い方

数値を判定する例

まずは数値の判定です。テストの点数が70点以上なら「合格」と表示してみましょう。

=IF(B2>=70,"合格","不合格")

B2セルの値が70以上ならTRUEとなり「合格」が返ります。70未満ならFALSEとなり「不合格」が返ります。

比較演算子は >=(以上)のほかにも使えます。>(より大きい)、<(より小さい)、<=(以下)、=(等しい)、<>(等しくない)を場面に応じて使い分けてください。

文字列を判定する例

文字列の判定もよく使います。部署が「営業部」なら「外勤手当あり」と表示する例です。

=IF(C2="営業部","外勤手当あり","なし")

文字列を条件にするときは、必ずダブルクォーテーション(")で囲みます。囲み忘れると #NAME? エラーになるので注意してください。

条件に合わないときに空白を表示する

「条件に合うときだけ表示して、合わないときは空欄にしたい」。この要望はとても多いです。

=IF(B2>=100,"目標達成","")

偽の場合に "" を指定すれば、セルは空白になります。さきほど説明したとおり、省略するとFALSEが表示されてしまいます。見た目を整えたいときは "" を忘れずに入れましょう。

空白セルかどうかを判定する

ここまでは「空白を表示する」使い方でした。逆に「セルが空白かどうか」を条件にしたい場面もよくあります。たとえば未入力の行に「未入力」と出したいときです。

=IF(A2="","未入力","入力済")

A2が空白なら「未入力」、何か入っていれば「入力済」になります。反対に「空白でない」ことを条件にするなら <>"" を使います。

=IF(A2<>"","入力済","未入力")

「入力があるときだけ計算して、空白なら何も出さない」という定型もよく使います。A2に金額が入っているときだけ消費税込みの金額を出す例です。

=IF(A2="","",A2*1.1)

空白判定にはISBLANK関数もあります。ただし挙動が少し違うので注意してください。

セルの状態A2=""ISBLANK(A2)
何も入力していないTRUETRUE
数式が "" を返しているTRUEFALSE
半角スペースだけ入っているFALSEFALSE

数式の結果が空白に見えるセルまで判定したいなら A2="" が安心です。本当に何も入っていないセルだけを区別したい場合に限って、ISBLANK関数を使いましょう。

空白セルが集計に含まれない理由を知りたい方は、空白セルがカウントされない原因の記事も参考になります。

IF関数の実務活用パターン

ここからは、実務でよく使うIF関数のパターンを紹介します。

売上目標の達成判定

売上と目標を比較して、達成・未達を自動判定する例です。

=IF(C2>=B2,"達成","未達")

B2が目標額、C2が実績額です。月次レポートや営業成績表でよく使うパターンですね。

在庫数による発注アラート

在庫数が発注基準を下回ったらアラートを出す例です。

=IF(B2<=D2,"発注要","")

B2が現在庫数、D2が発注基準数です。条件に合わないときは空白にしておくと、一覧表がすっきりします。

勤怠データの残業判定

勤務時間が8時間を超えたら「残業あり」と表示する例です。

=IF(C2>8,"残業あり","")

C2に勤務時間数を数値で入力している前提です。Excelの時刻形式(シリアル値)で管理している場合は =IF(C2>TIME(8,0,0),"残業あり","") を使ってください。

残業がない日は空白にしておけば、残業のある日だけが目立ちます。

料金区分の自動振り分け

年齢に応じて料金区分を分ける例です。

=IF(B2>=18,"大人","子供")

イベントの参加費や交通費の計算などで使えます。3区分以上に分けたい場合は、後述するネストを使います。

請求書の税率自動切り替え

商品区分に応じて税率を切り替える例です。

=IF(D2="軽減税率",C2*0.08,C2*0.10)

D2に「軽減税率」と入力されていれば8%、それ以外は10%で計算します。請求書テンプレートに組み込んでおくと便利ですよ。

IF関数で複数条件を指定する方法(AND・OR)

「条件を2つ以上同時にチェックしたい」場合は、AND関数やOR関数と組み合わせます。

IF関数とAND関数で「すべて満たす」条件

AND関数は「すべての条件がTRUE」のときにTRUEを返します。IF関数の論理式にAND関数を入れる形です。

=IF(AND(B2>=80,C2>=80),"合格","不合格")

この例では、B2とC2の両方が80以上のときだけ「合格」になります。片方でも80未満なら「不合格」です。

AND関数には最大255個の条件を指定できます。ただし条件が多すぎると読みにくくなるので、3〜4個程度にとどめるのがおすすめです。

IF関数とOR関数で「いずれかを満たす」条件

OR関数は「いずれかの条件がTRUE」ならTRUEを返します。

=IF(OR(B2="東京",B2="大阪"),"対象","対象外")

B2が「東京」か「大阪」のどちらかなら「対象」になります。支店や地域でフィルタリングするときに便利です。

AND関数とOR関数は組み合わせることもできます。

=IF(AND(B2>=60,OR(C2="正社員",C2="契約社員")),"手当支給","対象外")

「勤務時間が60以上」かつ「正社員または契約社員」という複合条件です。ちょっと複雑に見えますが、ANDの中にORが入っているだけなのでシンプルですよ。

「〜を含む」を条件にする方法

「住所に『東京』が含まれていたら対象にしたい」。こう考えて =IF(A2="東京","対象","対象外") と書く方は多いです。しかしIF関数の = は完全一致の比較なので、ワイルドカードの * は文字そのものとして扱われます。結果は常に「対象外」になってしまいます。

部分一致を判定するときは、SEARCH関数とISNUMBER関数を組み合わせます。

=IF(ISNUMBER(SEARCH("東京",A2)),"対象","対象外")

SEARCH関数は文字が見つかると位置を数値で返し、見つからないと #VALUE! エラーを返します。ISNUMBER関数で「数値が返ったか」を確かめれば、含む・含まないをTRUE・FALSEに変換できる仕組みです。

もう一つの方法はCOUNTIF関数です。こちらはワイルドカードが使えるので、書き方が直感的です。

=IF(COUNTIF(A2,"*東京*")>0,"対象","対象外")

どちらを選ぶかは好みで構いません。大文字と小文字を区別したいときは、SEARCHの代わりにFIND関数を使います。

なお「東京」を含む、かつ「大阪」も含まない、のような複数の「含む」条件は、ISNUMBER(SEARCH(...))をAND関数やOR関数の中に並べれば組み立てられます。

IF関数のネスト(複数のIFを入れ子にする)

ネストの基本的な書き方

IF関数の中にIF関数を入れることを「ネスト(入れ子)」と呼びます。3つ以上の分岐が必要なときに使います。

たとえば成績をS・A・B・Cの4段階に分ける場合です。

=IF(A2>=90,"S",IF(A2>=75,"A",IF(A2>=60,"B","C")))

処理の流れはこうなります。

  1. A2が90以上 → 「S」
  2. A2が75以上 → 「A」
  3. A2が60以上 → 「B」
  4. どれにも当てはまらない → 「C」

ポイントは、条件を大きい順に並べることです。最初にTRUEになった時点で処理が確定します。

Excel 2007以降はネストを最大64段まで使えます。ただし実用上は3〜4段が限界です。それ以上になると数式が読めなくなります。

ネストが多い場合はIFS関数も検討

ネストが3段を超えるなら、IFS関数への書き換えも検討してみてください。

IFS関数なら同じ処理をフラットに書けます。

=IFS(A2>=90,"S",A2>=75,"A",A2>=60,"B",TRUE,"C")

ネストの閉じカッコを数える必要がなくなり、可読性が上がります。ただしIFS関数はExcel 2019/Microsoft 365以降の対応です。古いバージョンを使っている方がいる環境では、IF関数のネストを使いましょう。

IF関数と他の関数を組み合わせるテクニック

IF関数とVLOOKUP関数の組み合わせ

VLOOKUP関数の結果をIF関数で判定するパターンです。VLOOKUPで検索した値が条件を満たすかチェックできます。

=IF(VLOOKUP(A2,商品マスタ!A:C,3,FALSE)>=1000,"高額","通常")

商品コードから価格を検索し、1000以上なら「高額」と表示します。

VLOOKUPは検索値が見つからないと #N/A エラーになります。エラーを回避したい場合は、IFERROR関数で囲みましょう。

=IFERROR(IF(VLOOKUP(A2,商品マスタ!A:C,3,FALSE)>=1000,"高額","通常"),"該当なし")

IF関数とSUMIF関数の組み合わせ

SUMIF関数の合計結果をIF関数で評価するパターンです。

=IF(SUMIF(B:B,E2,C:C)>=100000,"優良","一般")

特定の担当者の売上合計が10万円以上なら「優良」と判定します。月次レポートの顧客ランク付けなどで活躍します。

IF関数でよくあるエラーと対処法

IF関数でつまずきやすいエラーを3つ紹介します。

エラー主な原因対処法
#NAME?関数名のスペルミス、文字列の " 漏れ関数名と引用符を確認する
#VALUE!参照先セルにエラーがある参照元のエラーを解消する
FALSEが表示される値が偽の場合を省略している"" を指定して空白にする

特に3つ目は要注意です。エラーではないのに意図しない表示になるため、原因に気づきにくいです。

「FALSEが表示されて困る」という方は、数式の末尾を確認してみてください。=IF(B2>=70,"合格") のように3つ目の引数がない場合、=IF(B2>=70,"合格","") に修正すれば解決します。

また、文字列をダブルクォーテーションで囲み忘れるミスも多いです。=IF(B2=合格,...) ではなく =IF(B2="合格",...) と書きましょう。

TIP

エラー処理を自動化したい場合は、IFERROR関数やIFNA関数の活用がおすすめです。IF関数で判定する前に、エラーを安全な値に置き換えておくと安心ですよ。

数字なのに条件に合わないとき(文字列の数値)

「見た目は100なのに、=IF(A2=100,"一致","不一致") が『不一致』になる」。こんなときは、A2の数字が文字列として入力されている可能性があります。

文字列の「100」と数値の100は、Excelでは別物として扱われます。= で一致しないだけでなく、>= や <= の結果も意図とずれます。文字列は数値より大きいものとして比較されるためです。

確認方法は次のとおりです。

  • セル内で左寄せになっている
  • セルの左上に緑の三角マークが出ている
  • =ISNUMBER(A2) がFALSEを返す

文字列を数値にするには、数式の中で変換するのが手軽です。

=IF(VALUE(A2)>=70,"合格","不合格")

A2*1 のように1を掛けても同じ結果になります。変換の方法は文字列の数値を数値に変換する方法で詳しく解説しています。VALUE関数の記事もあわせてどうぞ。

もう一つ、数式側の落とし穴があります。=IF(A2>="70","合格","不合格") のように比較する数字を引用符で囲むと、「70」が文字列になります。A2が数値の場合、数値は文字列より小さいと扱われるため、常に「不合格」になってしまいます。

数値を条件にするときは、70 のように引用符なしで書きましょう。

IF関数と似た関数との使い分け

IF関数のネストとIFS関数の比較

条件分岐が3つ以上あるとき、IFのネストとIFS関数のどちらを使うか迷いますよね。

比較項目IF関数(ネスト)IFS関数
対応バージョン全バージョンExcel 2019 / Microsoft 365 以降
最大条件数64段(ネスト)127条件
可読性3段超で低下条件が多くても読みやすい
else(それ以外)の書き方最後の値が偽の場合最後の条件にTRUEを指定

使い分けの目安はこうなります。

  • 条件が2つまで → IF関数
  • 条件が3つ以上 → IFS関数(環境が対応していれば)
  • 古いExcelとの互換性が必要 → IF関数のネスト

詳しくはIF・IFS・IFERROR・IFNAの使い分けの記事もあわせてご覧ください。

IF関数のよくある質問

IF関数の結果が空白になるのはなぜですか?

真の場合または偽の場合に "" を指定している可能性があります。=IF(B2>=100,"目標達成","") のように書いていれば、条件に合わないとき空白に見えるのは正しい動きです。

IF関数で「何もしない」にするには?

「条件に合わなければ元の値のまま」にしたい場合は、偽の場合に元のセルを指定します。たとえば =IF(B2>=100,"目標達成",B2) と書けば、100未満のときはB2の値がそのまま表示されます。

Googleスプレッドシートでも同じ書き方ができますか?

構文は共通で、=IF(論理式, 真の場合, 偽の場合) がそのまま使えます。詳しくはスプレッドシートのIF関数の使い方をご覧ください。

IF関数とSWITCH関数の使い分け

SWITCH関数は「値が○○のとき△△」という完全一致の分岐に向いています。

  • 大小比較(>= や < など) → IF関数
  • 完全一致の分岐(値が「A」なら○○、「B」なら△△) → SWITCH関数

IF関数は条件式を自由に書けるため、柔軟性が高いです。一方、SWITCH関数は完全一致の分岐を見やすく書けます。場面に応じて使い分けてみてください。

なお、分岐する値が固定の場合はCHOOSE関数も選択肢のひとつです。

まとめ

IF関数は「条件に応じて結果を分岐させる」Excelの基本関数です。この記事のポイントをおさらいします。

  • 構文は =IF(論理式, 真の場合, 偽の場合) のシンプルな3引数
  • 偽の場合を省略するとFALSEが表示される。空白にしたいなら "" を指定する
  • 複数条件はAND関数・OR関数と組み合わせる
  • ネストは3〜4段が実用上の限界。それ以上はIFS関数を検討する
  • VLOOKUPやSUMIFとの組み合わせで実務の自動化が広がる

まずは基本の形を覚えて、実務の表に組み込んでみてください。一度使い方がわかると、いろいろな場面で応用できますよ。

関連記事

条件分岐・条件付き処理の関連記事もあわせてチェックしてみてくださいね。

タイトルとURLをコピーしました