【初心者向け】ExcelのIF関数の基本と使い方|条件分岐をマスターしよう!

Excel

「テストの点数に応じて自動で合格・不合格を判定したい」
「売上金額によって手当の有無を決めたい」
「データの内容に応じて異なる処理をしたい」

このような「もし○○なら△△、そうでなければ××」という条件分岐を実現するのが、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=100A1が100と等しい場合TRUE
<>等しくないA1<>0A1が0以外の場合TRUE
>より大きいA1>50A1が50より大きい場合TRUE
>=以上A1>=60A1が60以上の場合TRUE
<より小さいA1<100A1が100未満の場合TRUE
<=以下A1<=80A1が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関数は、条件に応じた自動判定を実現する基本的で強力な機能です。適切に活用することで、手動作業の大幅な削減と処理の正確性向上が期待できます。

習得のロードマップ

  1. 基本のIF文をマスター
  2. 比較演算子の使い分けを理解
  3. AND・OR関数との組み合わせを習得
  4. ネストIFで複雑な条件分岐を実現
  5. エラー処理を追加して実用性を向上
  6. 最新関数(IFS、SWITCH)で効率化

活用のポイント

場面推奨方法理由
単純な2択判定基本IFシンプルで理解しやすい
3-5段階の判定ネストIF またはIFS条件が明確
複数条件の組み合わせAND・OR関数論理的で読みやすい
特定値による分岐SWITCH関数効率的で保守性が高い

コメント

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