📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

概要

Excelの論理関数は、条件判定や分岐処理を行うための基本的かつ重要な機能である。
データの値や条件に応じて処理を変えることで、より柔軟で動的な計算や分析が可能になる。

主な機能として、条件分岐 (IF、IFS系)、論理演算 (AND、OR、NOT系)、エラー処理 (IFERROR、IFNA系)、多分岐処理 (SWITCH)、論理値操作 (TRUE、FALSE)がある。

これらの関数は、データの検証、条件付き計算、エラー処理、複雑な業務ロジックの実装等、様々な場面で活用される。


基本的な条件分岐 (IF関数)

IF関数

条件に応じて異なる値を返す論理関数である。

構文:

=IF(論理式, [真の場合], [偽の場合])


引数の説明:

  • 論理式
    TRUEまたはFALSEを返す条件式
  • 真の場合
    論理式がTRUEのときに返す値
  • 偽の場合
    論理式がFALSEのときに返す値 (省略時は FALSE)


使用例:

  • =IF(A1>=60, "合格", "不合格")
    A1が60以上なら「合格」、そうでなければ「不合格」
  • =IF(A1="", "未入力", A1)
    A1が空白なら「未入力」、そうでなければA1の値
  • =IF(A1>0, A1, 0)
    A1が正の数ならその値、そうでなければ0


※注意
真の場合や偽の場合には、数値、文字列、数式、関数を指定できる。
省略した場合、真の場合はTRUE、偽の場合はFALSEが返される。

ネストしたIF関数

IF関数の中にIF関数を入れ子にすることで、複数の条件分岐を実現できる。

使用例:

  • =IF(A1>=80, "優", IF(A1>=60, "良", "不可"))
    80以上は「優」、60以上は「良」、それ以外は「不可」
  • =IF(A1="", "", IF(A1>=100, "達成", "未達成"))
    A1が空白なら空白、100以上なら「達成」、それ以外は「未達成」


※注意
ネストは最大64階層まで可能だが、可読性のため3〜4階層程度に抑えることが推奨される。
複雑な条件分岐の場合は、IFS関数やSWITCH関数の使用を検討する。


複数条件分岐 (IFS関数)

IFS関数

複数の条件を順番に評価し、最初に真となった条件に対応する値を返す関数である。
Excel 2016以降で使用可能である。

構文:

=IFS(論理式1, 真の場合1, [論理式2, 真の場合2], ...)


使用例:

  • =IFS(A1>=80, "優", A1>=60, "良", A1>=40, "可", TRUE, "不可")
    複数の成績判定
  • =IFS(B1="A", 100, B1="B", 80, B1="C", 60, TRUE, 0)
    ランクに応じた点数割り当て


※注意
条件は上から順に評価され、最初に真となった条件の値が返される。
全ての条件が偽の場合はエラー (#N/A) になるため、最後に TRUE を指定することが推奨される。
ネストしたIFよりも可読性が高い。

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

同じ処理を実現する場合の比較例。

ネストしたIF関数:

=IF(A1>=80, "優", IF(A1>=60, "良", IF(A1>=40, "可", "不可")))


IFS関数:

=IFS(A1>=80, "優", A1>=60, "良", A1>=40, "可", TRUE, "不可")


IFS関数の方が構造が明確で、条件の追加や変更が容易である。


論理演算関数

AND関数

全ての条件が真 (TRUE) の場合にのみ真を返す関数である。

構文:

=AND(論理式1, [論理式2], ...)


使用例:

  • A1とB1が両方とも60以上ならTRUE
    =AND(A1>=60, B1>=60)
  • A1、B1、C1の全てが空白でないならTRUE
    =AND(A1<>"", B1<>"", C1<>"")
  • IF関数と組み合わせた使用例
    =IF(AND(A1>=60, B1>=60), "合格", "不合格")


※注意
引数は最大255個まで指定可能。
1つでも偽があれば、結果は偽になる。
空白セルは FALSE として評価される。

OR関数

いずれかの条件が真 (TRUE) の場合に真を返す関数である。

構文:

=OR(論理式1, [論理式2], ...)


使用例:

  • A1またはB1のいずれかが80以上ならTRUE
    =OR(A1>=80, B1>=80)
  • A1が「東京」「大阪」「名古屋」のいずれかならTRUE
    =OR(A1="東京", A1="大阪", A1="名古屋")
  • A1またはB1のいずれかが空白なら「入力不足」
    =IF(OR(A1="", B1=""), "入力不足", "OK")


※注意
引数は最大255個まで指定可能。
全てが偽の場合のみ、結果は偽になる。

NOT関数

論理値を反転させる関数である。

構文:

=NOT(論理式)


使用例:

  • A1が60未満ならTRUE (60以上でないならTRUE)
    =NOT(A1>=60)
  • A1が空白でないならTRUE
    =NOT(A1="")
  • A1とB1が両方とも60以上でないなら「不合格」
    =IF(NOT(AND(A1>=60, B1>=60)), "不合格", "合格")


NOTの代替表現:

  • =NOT(A1>=60)=A1<60 と同じ
  • =NOT(A1="")=A1<>"" と同じ


XOR関数

排他的論理和を返す関数である。奇数個の引数が真の場合に真を返す。
Excel 2013以降で使用可能である。

構文:

=XOR(論理式1, [論理式2], ...)


使用例:

  • A1とB1のいずれか一方のみが正の数ならTRUE
    =XOR(A1>0, B1>0)
  • 奇数個のセルが「はい」ならTRUE
    =XOR(A1="はい", B1="はい", C1="はい")


※注意
2つの引数の場合 : 一方のみが真の場合に真を返す。
3つ以上の引数の場合 : 奇数個が真の場合に真を返す。


論理値定数

TRUE関数 / FALSE関数

論理値 TRUE または FALSE を返す関数である。

構文:

=TRUE()
=FALSE()


使用例:

  • =TRUE()
    TRUE を返す
  • =FALSE()
    FALSE を返す
  • =IF(A1>0, TRUE(), FALSE())
    A1が正の数ならTRUE、そうでなければFALSE


※注意
通常は、関数を使わずに直接 TRUE や FALSE と入力することが多い。
IFS関数の最後の条件として =IFS(..., TRUE, "その他") のように使用される。


エラー処理関数

IFERROR関数

数式の結果がエラーの場合に、指定した値を返す関数である。
Excel 2007以降で使用可能。

構文:

=IFERROR(値, エラーの場合の値)


エラーの種類:
IFERROR関数は、以下に示す全てのエラーを捕捉する。

  • #N/A
    値が見つからない
  • #VALUE!
    値のタイプが不正
  • #REF!
    参照が無効
  • #DIV/0!
    ゼロ除算
  • #NUM!
    数値が不正
  • #NAME?
    名前が認識されない
  • #NULL!
    範囲の指定が不正


使用例:

  • =IFERROR(A1/B1, 0)
    除算結果がエラーなら0を返す
  • =IFERROR(VLOOKUP(A1, C:D, 2, FALSE), "未登録")
    VLOOKUP結果がエラーなら「未登録」を返す
  • =IFERROR(A1*B1, "")
    計算結果がエラーなら空白を返す


※注意
エラーでない場合は、元の値がそのまま返される。

IFNA関数

数式の結果が #N/A エラーの場合にのみ、指定した値を返す関数である。
Excel 2013以降で使用可能。

構文:

=IFNA(値, #N/Aの場合の値)


使用例:

  • =IFNA(VLOOKUP(A1, C:D, 2, FALSE), "未登録")
    VLOOKUPが #N/A エラーなら「未登録」を返す
  • =IFNA(MATCH(A1, B:B, 0), "該当なし")
    MATCHが #N/A エラーなら「該当なし」を返す


※注意
#N/A 以外のエラーは捕捉されず、そのまま表示される。
VLOOKUP関数 や MATCH関数等の検索関数と組み合わせて使用されることが多い。

IFERROR と IFNA の違い

IFERRORは全てのエラーを処理し、IFNAは #N/A エラーのみを処理する。

比較例:

  • =IFERROR(A1/B1, "エラー")
    全てのエラー (#DIV/0!、#VALUE! 等) でエラーを返す
  • =IFNA(A1/B1, "N/A")
    #N/A エラーのみで「N/A」を返す。
    #DIV/0! 等はそのまま表示


検索関数では、データが見つからない場合の #N/A エラーのみを処理する場合が多いため、IFNA関数が適している。


多分岐処理 (SWITCH関数)

SWITCH関数

式の値と一致するものを検索し、対応する結果を返す関数である。
Excel 2016以降で使用可能である。

構文:

=SWITCH(式, 値1, 結果1, [値2, 結果2], ..., [既定値])


使用例:

  • 数値に対応する曜日を返す。
    =SWITCH(A1, 1, "月曜", 2, "火曜", 3, "水曜", 4, "木曜", 5, "金曜", "休日")
  • ランクに対応する点数を返す。
    =SWITCH(B1, "A", 100, "B", 80, "C", 60, 0)
  • 都市名に対応する地域を返す。
    =SWITCH(C1, "東京", "関東", "大阪", "関西", "名古屋", "中部", "その他")


※注意
一致する値が見つからない場合は #N/A エラーになる。
最後に既定値を指定することで、エラーを回避できる。
ネストしたIFやIFS関数よりも簡潔に書ける場合がある。

SWITCH関数 / IFS関数の使い分け

SWITCH関数は値の完全一致で分岐、IFS関数は条件式で分岐する。

SWITCH関数が適している場合:

  • 曜日、ランク、区分など、特定の値に基づく分岐
  • 値の種類が明確に決まっている場合


IFS関数が適している場合:

  • 数値の範囲判定
    >=80、>=60 等
  • 複雑な条件式
    AND、OR を含む



実用的な使用例

成績判定

テストの点数に応じて評価を返す例。

基本的な判定:

=IF(A1>=60, "合格", "不合格")


5段階評価:

=IFS(A1>=80, "優", A1>=70, "良", A1>=60, "可", A1>=50, "不可", TRUE, "不可")
# または
=IF(A1>=80, "優", IF(A1>=70, "良", IF(A1>=60, "可", IF(A1>=50, "不可", "不可"))))


複数条件の組み合わせ

AND関数やOR関数を使った複雑な条件判定の例。

  • 両方の科目で合格
    =IF(AND(A1>=60, B1>=60), "合格", "不合格")
  • いずれかの科目で優秀
    =IF(OR(A1>=90, B1>=90), "優秀", "普通")
  • 全ての項目が入力済み
    =IF(AND(A1<>"", B1<>"", C1<>""), "完了", "未完了")


エラー処理

計算エラーを回避する例。

ゼロ除算エラーの回避:

=IFERROR(A1/B1, 0)
# または
=IF(B1=0, 0, A1/B1)


VLOOKUP のエラー処理:

=IFERROR(VLOOKUP(A1, C:E, 2, FALSE), "該当なし")
# または
=IFNA(VLOOKUP(A1, C:E, 2, FALSE), "該当なし")


段階的な手数料計算

金額に応じた手数料率を適用する例。

  • 10万円以上は5%、5万円以上は7%、1万円以上は10%、それ以外は15%の手数料を計算する
    =IFS(A1>=100000, A1*0.05, A1>=50000, A1*0.07, A1>=10000, A1*0.1, TRUE, A1*0.15)


曜日による処理

曜日に応じた処理を行う例。

  • 曜日の取得
    =TEXT(A1, "aaa")
  • 土日の判定
    =IF(OR(TEXT(A1, "aaa")="土", TEXT(A1, "aaa")="日"), "休日", "平日")
  • 曜日ごとの担当者
    =SWITCH(WEEKDAY(A1), 1, "田中", 2, "鈴木", 3, "佐藤", 4, "高橋", 5, "渡辺", 6, "伊藤", 7, "山本")


空白チェック

セルの入力状況をチェックする例。

  • 空白の場合にメッセージ
    =IF(A1="", "未入力", A1)
  • 必須項目のチェック
    =IF(OR(A1="", B1="", C1=""), "入力不足", "入力完了")


ランク分け

数値に応じたランクを割り当てる例。

  • 売上高によるランク
    =IFS(A1>=1000000, "S", A1>=500000, "A", A1>=100000, "B", TRUE, "C")
  • ランクに応じた報酬
    =SWITCH(B1, "S", 100000, "A", 50000, "B", 20000, "C", 10000, 0)


条件付き計算

条件に応じて異なる計算を行う例。

  • 会員種別による割引
    =IF(B1="プレミアム", A1*0.8, IF(B1="スタンダード", A1*0.9, A1))
  • 購入数量による単価
    =IFS(A1>=100, 90, A1>=50, 95, A1>=10, 98, TRUE, 100)


複合条件の判定

複数の条件を組み合わせた例。

  • 年齢と性別による判定
    =IF(AND(A1="男性", B1>=20, B1<65), "対象", "対象外")
  • 複数項目のいずれかが基準を満たす
    =IF(OR(A1>=80, B1>=80, C1>=80), "合格", "不合格")
  • 全てが基準を満たさない
    =IF(NOT(OR(A1>=60, B1>=60)), "要注意", "問題なし")