エクセル関数辞典 エクセル関数辞典

IF関数とOR・AND関数の組み合わせ技|複合条件の実装

IF AND OR 複合条件 論理関数 Excel関数
広告スペース (article-top)

IF関数だけでは「AかつB」や「AまたはB」のような複合条件を直接記述できません。AND関数やOR関数と組み合わせることで、複数の条件を同時に評価する実務的な数式を作成できます。この記事では、基本的な組み合わせパターンから3条件以上の複雑な判定まで、具体的な業務シナリオとともに解説します。

IF関数とAND関数の基本的な組み合わせ

AND関数は、指定したすべての条件がTRUEの場合にTRUEを返します。IF関数の論理式にAND関数を入れることで、「すべての条件を満たす場合」の処理を記述できます。

構文

=IF(AND(条件1, 条件2, ...), 真の場合, 偽の場合)

実務例:売上目標の達成判定

売上額が100万円以上かつ利益率が20%以上の場合に「達成」と判定する例です。

社員名売上額利益率判定
田中1,200,00025%達成
鈴木980,00030%未達成
佐藤1,500,00018%未達成
山田1,100,00022%達成

D2セルに入力する数式は次の通りです。

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

田中さんは売上額が100万円以上かつ利益率が20%以上なので「達成」になります。鈴木さんは利益率は満たしていますが売上額が不足しているため「未達成」、佐藤さんは売上額は十分ですが利益率が不足しているため「未達成」となります。

IF関数とOR関数の基本的な組み合わせ

OR関数は、指定した条件のうち1つでもTRUEの場合にTRUEを返します。「いずれかの条件を満たす場合」の処理に使います。

構文

=IF(OR(条件1, 条件2, ...), 真の場合, 偽の場合)

実務例:勤怠アラートの表示

遅刻回数が3回以上、または欠勤日数が2日以上の場合に「要面談」と表示する例です。

社員名遅刻回数欠勤日数アラート
田中10-
鈴木41要面談
佐藤03要面談
山田20-

D2セルに入力する数式は次の通りです。

=IF(OR(B2>=3, C2>=2), "要面談", "-")

鈴木さんは遅刻回数が3回以上なので「要面談」、佐藤さんは欠勤日数が2日以上なので「要面談」となります。

ANDとORを同時に使う複合条件

実務では、ANDとORを組み合わせたさらに複雑な条件が必要になることがあります。

実務例:受注可否の判定

次の条件で受注可否を判定します。

  • 在庫数が注文数以上であること(必須条件)
  • かつ、顧客ランクがAまたはBであること
顧客名顧客ランク注文数在庫数受注可否
X社A50100受注可
Y社C30200受注不可
Z社B8060受注不可

E2セルの数式は次のようになります。

=IF(AND(D2>=C2, OR(B2="A", B2="B")), "受注可", "受注不可")

AND関数の中にOR関数を入れることで、「在庫が足りている、かつ、顧客ランクがAまたはB」という複合条件を表現しています。

条件の組み立て方のコツ

複合条件を組み立てるときは、日本語で条件を整理してから数式に変換すると間違いが減ります。

  1. 「AかつB」はAND(A, B)
  2. 「AまたはB」はOR(A, B)
  3. 「(AかつB)またはC」はOR(AND(A, B), C)
  4. 「Aかつ(BまたはC)」はAND(A, OR(B, C))

日本語の条件文と関数の対応を意識すると、複雑な条件でも正確に記述できます。

3条件以上のAND関数

AND関数には最大255個の条件を指定できます。3条件以上の判定も同じ構文で記述可能です。

実務例:成績評価の総合判定

国語、数学、英語のすべてが70点以上の場合に「優秀」と判定します。

氏名国語数学英語総合判定
田中857290優秀
鈴木906588要努力
佐藤758071優秀

E2セルの数式です。

=IF(AND(B2>=70, C2>=70, D2>=70), "優秀", "要努力")

3つの教科すべてが70点以上の場合のみ「優秀」と表示されます。1科目でも70点未満があれば「要努力」です。

4条件の例:採用基準の判定

年齢、経験年数、資格の有無、面接スコアの4条件で採用可否を判定します。

=IF(AND(B2>=22, B2<=35, C2>=3, D2="あり", E2>=70), "採用候補", "見送り")

年齢の上限と下限を分けて指定しているため、実質5つの条件になっています。このように、AND関数なら条件をカンマ区切りで追加するだけで拡張できます。

IF関数のネストとAND/ORの組み合わせ

3条件以上のOR関数

OR関数も同様に、3つ以上の条件を指定できます。土曜日、日曜日、祝日のいずれかに該当する場合に「休日」と表示する例です。

=IF(OR(WEEKDAY(A2,2)=6, WEEKDAY(A2,2)=7, COUNTIF(祝日リスト,A2)>0), "休日", "営業日")

WEEKDAY関数で土曜日(6)と日曜日(7)を判定し、COUNTIF関数で祝日リストとの一致を確認しています。

条件に応じて3つ以上の結果を返したい場合は、IF関数のネストとAND/OR関数を組み合わせます。

実務例:社員の評価ランク判定

売上と顧客満足度の2つの指標でA・B・Cの3ランクに分類する例です。

  • Aランク:売上150万円以上かつ満足度80%以上
  • Bランク:売上100万円以上かつ満足度60%以上(Aランクの条件を満たさない)
  • Cランク:上記以外
=IF(AND(B2>=1500000, C2>=0.8), "A",
 IF(AND(B2>=1000000, C2>=0.6), "B", "C"))

この数式は外側のIF関数でまずAランクの条件を判定し、該当しなければ内側のIF関数でBランクの条件を判定します。どちらにも該当しなければCランクとなります。

実務例:配送方法の自動判定

注文金額と重量、配送先に応じて配送方法を判定する例です。

=IF(AND(B2>=10000, OR(C2="東京", C2="大阪")), "即日配送",
 IF(OR(D2>20, B2<3000), "宅配便", "メール便"))

このように、IF関数のネストの各段階でAND/OR関数を使うことで、複雑なビジネスルールを1つの数式で表現できます。

数式の可読性を高めるテクニック

NOT関数との組み合わせ

NOT関数はTRUEとFALSEを反転させます。「~でない場合」の条件を記述するときに使います。

入金フラグが「済」でない場合に「未入金」と表示する例です。

=IF(NOT(C2="済"), "未入金", "")

この例ではC2<>“済”と書くこともできますが、NOT関数を使うと条件の意図が明確になります。AND/OR関数の中にNOT関数を入れることで、否定条件を含む複合判定も可能です。

=IF(AND(NOT(B2="A"), C2>=50000), "特別対応", "通常対応")

名前の定義を活用する

セル範囲や定数に名前を定義すると、数式が読みやすくなります。

=IF(AND(売上>=目標売上, 利益率>=目標利益率), "達成", "未達成")

セル参照が名前に置き換わることで、数式の意図がひと目でわかるようになります。

LET関数で中間結果を変数化する

Excel 365以降では、LET関数を使って条件の結果を変数に格納できます。

=LET(
 売上OK, B2>=1000000,
 利益OK, C2>=0.2,
 顧客OK, OR(D2="A", D2="B"),
 IF(AND(売上OK, 利益OK, 顧客OK), "承認", "要検討"))

条件ごとに名前をつけることで、複雑な数式でも各条件の意味が明確になります。

セルに条件を分けて記述する

条件判定の結果を補助列に分けて記述し、最終判定で参照する方法もあります。計算の透明性が高まるため、チームでシートを共有する場合に有効です。

よくあるエラーと対処法

条件の優先順位ミス

IF関数のネストでは、条件は上から順に評価されます。厳しい条件を先に書かないと、意図しない結果になることがあります。

カッコの対応ミス

AND/OR/IF関数を組み合わせると、カッコの数が多くなります。Excelの数式バーでは、カッコをクリックすると対応するカッコが色分けされるので活用してください。

文字列比較の注意点

AND関数やOR関数で文字列を比較する場合、大文字・小文字は区別されません。区別が必要な場合はEXACT関数を組み合わせてください。

Google スプレッドシートでの互換性

IF関数、AND関数、OR関数、NOT関数はいずれもGoogle スプレッドシートで同じ構文で使用できます。動作の違いは基本的にありません。

まとめ

IF関数とAND/OR関数の組み合わせは、実務でもっとも多く使われるパターンの1つです。

  • AND関数は「すべての条件を満たす場合」の判定に使う
  • OR関数は「いずれかの条件を満たす場合」の判定に使う
  • ANDの中にOR、ORの中にANDを入れて複雑な条件を表現できる
  • 3条件以上でもカンマ区切りで条件を追加するだけ
  • 可読性を高めるにはLET関数や名前の定義が有効

まずは2条件のAND/ORから始めて、徐々に複雑な複合条件に挑戦してみてください。数式が長くなってきたら、IFS関数やSWITCH関数への置き換えも検討しましょう。

広告スペース (article-bottom)

あわせて読みたい