「条件によって表示する値を変えたい」。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関数の実務活用パターン
ここからは、実務でよく使う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関数のネスト(複数のIFを入れ子にする)
ネストの基本的な書き方
IF関数の中にIF関数を入れることを「ネスト(入れ子)」と呼びます。3つ以上の分岐が必要なときに使います。
たとえば成績をS・A・B・Cの4段階に分ける場合です。
=IF(A2>=90,"S",IF(A2>=75,"A",IF(A2>=60,"B","C")))
処理の流れはこうなります。
- A2が90以上 → 「S」
- A2が75以上 → 「A」
- A2が60以上 → 「B」
- どれにも当てはまらない → 「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関数で判定する前に、エラーを安全な値に置き換えておくと安心ですよ。
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関数とSWITCH関数の使い分け
SWITCH関数は「値が○○のとき△△」という完全一致の分岐に向いています。
- 大小比較(
>=や<など) → IF関数 - 完全一致の分岐(値が「A」なら○○、「B」なら△△) → SWITCH関数
IF関数は条件式を自由に書けるため、柔軟性が高いです。一方、SWITCH関数は完全一致の分岐を見やすく書けます。場面に応じて使い分けてみてください。
なお、分岐する値が固定の場合はCHOOSE関数も選択肢のひとつです。
まとめ
IF関数は「条件に応じて結果を分岐させる」Excelの基本関数です。この記事のポイントをおさらいします。
- 構文は
=IF(論理式, 真の場合, 偽の場合)のシンプルな3引数 - 偽の場合を省略するとFALSEが表示される。空白にしたいなら
""を指定する - 複数条件はAND関数・OR関数と組み合わせる
- ネストは3〜4段が実用上の限界。それ以上はIFS関数を検討する
- VLOOKUPやSUMIFとの組み合わせで実務の自動化が広がる
まずは基本の形を覚えて、実務の表に組み込んでみてください。一度使い方がわかると、いろいろな場面で応用できますよ。
関連記事
条件分岐・条件付き処理の関連記事もあわせてチェックしてみてくださいね。
- IF・IFS・IFERROR・IFNAの使い分け -- どの関数を使うか迷ったときに
- IFS関数の使い方 -- 複数条件をネストなしで書く
- AND関数の使い方 -- 「かつ」の条件判定
- OR関数の使い方 -- 「または」の条件判定
- IFERROR関数の使い方 -- エラー時の処理
- IFNA関数の使い方 -- #N/Aエラーの処理
- SWITCH関数の使い方 -- 値のパターンで分岐
- CHOOSE関数の使い方 -- インデックスで分岐
- VLOOKUP関数の使い方 -- データの検索
