「テストの点数に応じて自動で合格・不合格を判定したい」
「売上金額によって手当の有無を決めたい」
「データの内容に応じて異なる処理をしたい」
このような「もし○○なら△△、そうでなければ××」という条件分岐を実現するのが、ExcelのIF関数です。
IF関数をマスターすることで、手動での判定作業を自動化し、効率的なデータ処理が可能になります。
この記事では、IF関数の基本から応用まで、初心者の方にもわかりやすく、実例を交えながら詳しく解説します。
IF関数の基本概念

IF関数とは
IF関数は、指定した条件が真(TRUE)か偽(FALSE)かを判定し、その結果に応じて異なる値を返すExcelの論理関数です。
プログラミングの「if文」と同じ概念で、Excelでの自動判定処理の基盤となります。
日常生活でのIF文の例
私たちは普段から無意識にIF文的な思考をしています:
- もし雨が降っているなら傘を持つ、そうでなければ傘は不要
- もし電車が遅延しているならバスで行く、そうでなければ電車で行く
- もしテストが60点以上なら合格、そうでなければ不合格
ExcelのIF関数は、このような条件判定をセル内で自動実行します。
IF関数の基本構文と使い方
基本構文
=IF(論理式, 真の場合の値, 偽の場合の値)
パラメータの詳細
パラメータ | 説明 | 例 |
---|---|---|
論理式 | 判定したい条件(TRUE/FALSEで判定される) | A1>=60 , B1="営業" |
真の場合の値 | 条件が満たされた時に表示する値 | "合格" , 1000 , A1*0.1 |
偽の場合の値 | 条件が満たされなかった時に表示する値 | "不合格" , 0 , "" |
基本的な使用例
数値による条件判定
# テストの合格判定
=IF(A1>=60, "合格", "不合格")
# 具体例:
A1が85の場合 → "合格"
A1が45の場合 → "不合格"
文字列による条件判定
# 部署による手当判定
=IF(B1="営業", 5000, 0)
# 具体例:
B1が"営業"の場合 → 5000
B1が"経理"の場合 → 0
計算式を含む条件判定
# 売上に応じたボーナス計算
=IF(C1>=100000, C1*0.05, 0)
# 具体例:
C1が150000の場合 → 7500(150000×0.05)
C1が80000の場合 → 0
実際のワークシートでの活用例
# 学生の成績管理表
A B C D
1 名前 点数 判定 備考
2 田中 85 =IF(B2>=60,"合格","不合格") =IF(B2>=80,"優秀","")
3 佐藤 55 =IF(B3>=60,"合格","不合格") =IF(B3>=80,"優秀","")
4 鈴木 92 =IF(B4>=60,"合格","不合格") =IF(B4>=80,"優秀","")
結果:
A B C D
1 名前 点数 判定 備考
2 田中 85 合格 優秀
3 佐藤 55 不合格
4 鈴木 92 合格 優秀
比較演算子の種類と使い方

基本的な比較演算子
演算子 | 意味 | 例 | 結果 |
---|---|---|---|
= | 等しい | A1=100 | A1が100と等しい場合TRUE |
<> | 等しくない | A1<>0 | A1が0以外の場合TRUE |
> | より大きい | A1>50 | A1が50より大きい場合TRUE |
>= | 以上 | A1>=60 | A1が60以上の場合TRUE |
< | より小さい | A1<100 | A1が100未満の場合TRUE |
<= | 以下 | A1<=80 | A1が80以下の場合TRUE |
文字列の比較
# 完全一致
=IF(A1="営業", "営業部です", "他部署です")
# 大文字小文字を区別しない(UPPER関数使用)
=IF(UPPER(A1)="EXCEL", "Excelです", "Excelではありません")
# 空白チェック
=IF(A1="", "未入力", "入力済み")
日付の比較
# 今日より後の日付かチェック
=IF(A1>TODAY(), "未来の日付", "過去または今日")
# 特定の日付より前かチェック
=IF(A1<DATE(2024,12,31), "2024年内", "2025年以降")
# 期限切れチェック
=IF(A1<TODAY(), "期限切れ", "有効")
ネスト(入れ子)IF関数の活用
ネストIFとは
IF関数の中にさらにIF関数を組み込むことで、3つ以上の条件分岐を実現できます。
基本的なネストIF
# 3段階の成績判定
=IF(A1>=80, "優", IF(A1>=60, "良", "不可"))
# 処理の流れ:
# 1. A1が80以上か? → YES: "優"
# 2. NO → A1が60以上か? → YES: "良"
# 3. NO → "不可"
複雑なネストIFの例
# 5段階の詳細評価
=IF(A1>=90, "S", IF(A1>=80, "A", IF(A1>=70, "B", IF(A1>=60, "C", "D"))))
# 年齢層による分類
=IF(A1<20, "10代", IF(A1<30, "20代", IF(A1<40, "30代", IF(A1<50, "40代", "50代以上"))))
ネストIFのベストプラクティス
1. 読みやすい形式で記述
# 改行とインデントを使った見やすい記述(実際には1行で入力)
=IF(A1>=90, "S",
IF(A1>=80, "A",
IF(A1>=70, "B",
IF(A1>=60, "C", "D")
)
)
)
2. 条件の順序を工夫
# 高い条件から順に記述(推奨)
=IF(A1>=90, "S", IF(A1>=80, "A", IF(A1>=70, "B", "C以下")))
# 低い条件から記述(非推奨)
=IF(A1<70, "C以下", IF(A1<80, "B", IF(A1<90, "A", "S")))
AND・OR関数との組み合わせ

AND関数との組み合わせ
AND関数は、すべての条件が真の場合のみTRUEを返します。
# 基本構文
=IF(AND(条件1, 条件2, 条件3), 真の値, 偽の値)
# 実例:営業部で売上100万以上の場合にボーナス
=IF(AND(B1="営業", C1>=1000000), 50000, 0)
# 年齢と経験年数の両方の条件
=IF(AND(A1>=30, B1>=5), "昇格対象", "昇格対象外")
# 複数の数値条件
=IF(AND(A1>=60, A1<=100), "正常範囲", "範囲外")
OR関数との組み合わせ
OR関数は、いずれか1つでも条件が真ならTRUEを返します。
# 基本構文
=IF(OR(条件1, 条件2, 条件3), 真の値, 偽の値)
# 実例:営業部または開発部の場合に特別手当
=IF(OR(B1="営業", B1="開発"), 10000, 0)
# 高得点または満点の場合に特別評価
=IF(OR(A1>=95, A1=100), "特別評価", "通常評価")
# 複数の異常値チェック
=IF(OR(A1<0, A1>100), "エラー値", "正常値")
AND・ORを組み合わせた複雑な条件
# 営業部で高売上、または開発部で高評価の場合
=IF(OR(AND(B1="営業", C1>=1000000), AND(B1="開発", D1>=4.5)), "特別賞与", "通常賞与")
# 年齢が若く経験豊富、または年齢が高く管理職の場合
=IF(OR(AND(A1<=35, B1>=8), AND(A1>=40, C1="管理職")), "昇進候補", "継続勤務")
実用的なビジネス活用例
人事管理システム
# 従業員データの例
A B C D E
1 名前 年齢 経験年数 評価 昇格判定
2 田中 32 8 4.2 =IF(AND(B2>=30, C2>=5, D2>=4.0), "昇格", "継続")
3 佐藤 28 3 4.5 =IF(AND(B3>=30, C3>=5, D3>=4.0), "昇格", "継続")
# 給与計算
F G
1 基本給 特別手当
2 350000 =IF(E2="昇格", 50000, IF(D2>=4.0, 20000, 0))
3 280000 =IF(E3="昇格", 50000, IF(D3>=4.0, 20000, 0))
在庫管理システム
# 在庫状況の自動判定
A B C D
1 商品名 在庫数 最小値 状態
2 商品A 15 10 =IF(B2<=0, "欠品", IF(B2<=C2, "要注文", "充分"))
3 商品B 3 10 =IF(B3<=0, "欠品", IF(B3<=C3, "要注文", "充分"))
# 発注の必要性
E
1 発注要否
2 =IF(D2="要注文", "発注必要", IF(D2="欠品", "緊急発注", "発注不要"))
3 =IF(D3="要注文", "発注必要", IF(D3="欠品", "緊急発注", "発注不要"))
売上分析システム
# 売上目標達成度の判定
A B C D E
1 月 売上 目標 達成率 評価
2 1月 1200000 1000000 =B2/C2 =IF(D2>=1.2, "優秀", IF(D2>=1.0, "達成", "未達"))
3 2月 800000 1000000 =B3/C3 =IF(D3>=1.2, "優秀", IF(D3>=1.0, "達成", "未達"))
# インセンティブ計算
F
1 インセンティブ
2 =IF(E2="優秀", B2*0.05, IF(E2="達成", B2*0.02, 0))
3 =IF(E3="優秀", B3*0.05, IF(E3="達成", B3*0.02, 0))
顧客管理システム
# 顧客ランクの自動判定
A B C D
1 顧客名 年間購入額 購入回数 ランク
2 A社 1500000 12 =IF(B2>=1000000, "プラチナ", IF(B2>=500000, "ゴールド", "シルバー"))
3 B社 300000 8 =IF(B3>=1000000, "プラチナ", IF(B3>=500000, "ゴールド", "シルバー"))
# 割引率の設定
E
1 割引率
2 =IF(D2="プラチナ", 10%, IF(D2="ゴールド", 5%, 0%))
3 =IF(D3="プラチナ", 10%, IF(D3="ゴールド", 5%, 0%))
エラー処理とトラブルシューティング

よくあるエラーとその対処法
エラー | 原因 | 対処法 |
---|---|---|
#NAME? | 関数名の入力ミス | 正しくIF と入力 |
#VALUE! | データ型の不一致 | 数値と文字列の混在をチェック |
#REF! | 参照先セルの削除 | 正しいセル参照に修正 |
結果が期待と異なる | 論理式の記述ミス | 条件式を見直し |
エラー処理を含むIF文
# ISERROR関数との組み合わせ
=IF(ISERROR(A1/B1), "計算不可", A1/B1)
# IFERROR関数との組み合わせ(Excel 2007以降)
=IFERROR(IF(A1>=60, "合格", "不合格"), "データエラー")
# ISBLANK関数との組み合わせ
=IF(ISBLANK(A1), "未入力", IF(A1>=60, "合格", "不合格"))
データの妥当性チェック
# 数値データの範囲チェック
=IF(OR(A1<0, A1>100), "範囲外エラー", IF(A1>=60, "合格", "不合格"))
# 文字列データの妥当性チェック
=IF(OR(A1="", ISBLANK(A1)), "未入力エラー", IF(A1="営業", "営業部", "他部署"))
# 日付データの妥当性チェック
=IF(OR(A1<DATE(1900,1,1), A1>TODAY()), "日付エラー", "正常")
高度なテクニックと応用
IFS関数の活用(Excel 2016以降)
複雑なネストIFの代替として、IFS関数が利用できます。
# 従来のネストIF
=IF(A1>=90, "S", IF(A1>=80, "A", IF(A1>=70, "B", IF(A1>=60, "C", "D"))))
# IFS関数による簡略化
=IFS(A1>=90, "S", A1>=80, "A", A1>=70, "B", A1>=60, "C", TRUE, "D")
SWITCH関数の活用(Excel 2016以降)
特定の値に対する処理はSWITCH関数が便利です。
# 従来のネストIF
=IF(A1=1, "月曜日", IF(A1=2, "火曜日", IF(A1=3, "水曜日", "その他")))
# SWITCH関数による簡略化
=SWITCH(A1, 1, "月曜日", 2, "火曜日", 3, "水曜日", "その他")
配列数式との組み合わせ
# 複数セルの条件を一度に処理
=IF(SUM(A1:A10)>100, "目標達成", "目標未達")
# SUMIF関数との組み合わせ
=IF(SUMIF(A1:A10, ">50")>500, "条件クリア", "条件未達")
パフォーマンスの最適化

効率的なIF文の書き方
# 非効率な例(毎回同じ計算を実行)
=IF(A1*B1*C1>1000, A1*B1*C1*0.1, A1*B1*C1*0.05)
# 効率的な例(計算結果を一度だけ使用)
=LET(total, A1*B1*C1, IF(total>1000, total*0.1, total*0.05))
# ※LET関数はOffice 365で利用可能
メモリ使用量の最適化
- 不要に複雑なネストを避ける
- 可能な限りIFS関数やSWITCH関数を使用
- 大量データでは計算モードを手動に設定
よくある質問と回答
Q: IF文で複数の値を同時に返すことはできる?
A: IF文は1つの値しか返せませんが、文字列結合や配列を使って複数の情報を表示できます。
# 文字列結合による複数情報の表示
=IF(A1>=80, "合格(優秀)", IF(A1>=60, "合格(普通)", "不合格"))
# セル参照を使った情報の組み合わせ
=IF(A1>=60, B1&"さんは合格です", B1&"さんは不合格です")
Q: IF文の条件でワイルドカードは使える?
A: IF文で直接ワイルドカードは使えませんが、関数を組み合わせることで実現できます。
# 部分一致の判定
=IF(ISNUMBER(SEARCH("営業", A1)), "営業関連", "その他")
# 前方一致の判定
=IF(LEFT(A1, 2)="東京", "東京エリア", "その他エリア")
Q: IF文で空白セルを判定したい場合は?
A: ISBLANK関数や=””を使用します。
# ISBLANK関数を使用
=IF(ISBLANK(A1), "未入力", "入力済み")
# 空文字列との比較
=IF(A1="", "空白", "データあり")
# より厳密なチェック(スペースのみも空白とみなす)
=IF(TRIM(A1)="", "実質空白", "データあり")
まとめ
ExcelのIF関数は、条件に応じた自動判定を実現する基本的で強力な機能です。適切に活用することで、手動作業の大幅な削減と処理の正確性向上が期待できます。
習得のロードマップ
- 基本のIF文をマスター
- 比較演算子の使い分けを理解
- AND・OR関数との組み合わせを習得
- ネストIFで複雑な条件分岐を実現
- エラー処理を追加して実用性を向上
- 最新関数(IFS、SWITCH)で効率化
活用のポイント
場面 | 推奨方法 | 理由 |
---|---|---|
単純な2択判定 | 基本IF | シンプルで理解しやすい |
3-5段階の判定 | ネストIF またはIFS | 条件が明確 |
複数条件の組み合わせ | AND・OR関数 | 論理的で読みやすい |
特定値による分岐 | SWITCH関数 | 効率的で保守性が高い |
コメント