「売上が100万円以上かつ達成率が90%以上の担当者だけ抽出したい」「どちらかの条件を満たせばOKという振り分けをIFで書きたい」――こうした複数条件の分岐で必要になるのがAND・OR・NOT関数です。
IF関数単体では「ひとつの条件で真偽を判定する」しかできませんが、AND・OR・NOTと組み合わせることで複数の条件を同時に評価できるようになります。「AかつB」「AまたはB」「Aではない」という3種類の論理演算を理解すると、入れ子(ネスト)で読みにくくなったIF数式を大幅にシンプルにできます。
本記事では、AND・OR・NOT関数の基本構文から、IF関数との組み合わせパターン・実務シナリオ別の書き方・IFSとの使い分け・MOS Excel試験の出題ポイントまでを体系的に解説します。
AND・OR・NOT関数の基本構文と返す値
3つの論理関数はいずれもTRUE(真)またはFALSE(偽)を返す関数です。これらの戻り値をIF関数の第1引数に渡すことで、複数条件の分岐が実現します。
| 関数 | 構文 | 返す値 |
|---|---|---|
| AND | =AND(論理式1, 論理式2, …) | 全ての引数がTRUEのときTRUE。一つでもFALSEならFALSE |
| OR | =OR(論理式1, 論理式2, …) | いずれか一つ以上がTRUEのときTRUE。全てFALSEのときのみFALSE |
| NOT | =NOT(論理式) | 引数がTRUEならFALSE、FALSEならTRUEを返す(反転) |
引数に指定できる「論理式」は、比較演算子(=、<、>、<=、>=、<>)を使った条件式です。例としてA2>=100やB2="完了"のような形で指定します。
AND関数:全条件が揃ったときにTRUEを返す
AND関数は「AかつB」を表す論理演算です。指定した全ての条件が成立している場合にのみTRUEを返します。一つでも条件を満たさない引数があればFALSEになります。
=AND(A2>=100, B2>=90)
A2が100以上かつB2が90以上の場合にTRUEを返します。どちらか片方でも条件を外れればFALSEになります。引数は最大255個まで指定できます。
| A2(売上) | B2(達成率) | =AND(A2>=100, B2>=90) |
|---|---|---|
| 120 | 95 | TRUE |
| 80 | 95 | FALSE(A2が条件未満) |
| 120 | 80 | FALSE(B2が条件未満) |
| 80 | 80 | FALSE(両方とも条件未満) |
OR関数:いずれかの条件を満たせばTRUEを返す
OR関数は「AまたはB」を表す論理演算です。指定した条件のうち少なくとも一つが成立していればTRUEを返します。全ての条件がFALSEの場合にのみFALSEになります。
=OR(C2="VIP", D2>=500)
C2が”VIP”またはD2が500以上ならTRUEを返します。両方の条件を同時に満たしていてもTRUEです。
| C2(顧客区分) | D2(累計購入額) | =OR(C2=”VIP”, D2>=500) |
|---|---|---|
| VIP | 300 | TRUE(C2が条件を満たす) |
| 一般 | 600 | TRUE(D2が条件を満たす) |
| VIP | 600 | TRUE(両方とも条件を満たす) |
| 一般 | 200 | FALSE(両方とも条件未満) |
NOT関数:条件の判定を反転させる
NOT関数はひとつの引数を受け取り、その真偽値を反転させます。「〇〇ではない」という否定条件を表現したいときに使います。
=NOT(E2="キャンセル")
E2が”キャンセル”ではないときにTRUEを返します。E2が”キャンセル”のときはFALSEになります。
=NOT(E2="キャンセル")は=E2<>"キャンセル"と同じ結果を返しますが、NOT関数を使うと「〇〇ではない」という意図がより明確に読めます。AND・OR との組み合わせで複雑な除外条件を書くときに特に効果を発揮します。
IF+AND:複数条件を全て満たしたときの分岐
AND関数をIF関数の第1引数(論理式)に渡すことで、「全条件を満たした場合はA、そうでなければB」という分岐が実現します。
=IF(AND(A2>=100, B2>=90), "達成", "未達")
A2が100以上かつB2が90以上なら「達成」、どちらか一つでも条件を外れれば「未達」を返します。
入れ子IFで同じ結果を書くと次のようになります。
' 入れ子IFで書いた場合(読みにくい)
=IF(A2>=100, IF(B2>=90, "達成", "未達"), "未達")
AND関数を使うことで条件を一か所にまとめられ、後から条件を追加・変更するときも修正箇所が一目でわかります。
IF+OR:いずれかの条件を満たしたときの分岐
OR関数をIF関数の第1引数に渡すと、「少なくとも一つの条件を満たした場合はA、全て満たさない場合はB」という分岐になります。
=IF(OR(C2="VIP", D2>=500), "優先対応", "通常対応")
顧客区分がVIPまたは累計購入額が500万円以上なら「優先対応」、どちらも満たさなければ「通常対応」を返します。
OR関数も引数を255個まで指定できます。複数の担当者区分・商品カテゴリ・ステータス値のいずれかに該当するかをひとつのOR式でまとめることが可能です。
' 複数の値のいずれかに一致するか(OR関数)
=IF(OR(F2="東京", F2="大阪", F2="名古屋"), "主要都市", "その他")
IF+NOT:除外条件で分岐する
NOT関数をIFと組み合わせると、「特定の状態ではないとき」の分岐を明示的に表現できます。
=IF(NOT(E2="キャンセル"), "請求対象", "対象外")
E2が”キャンセル”でなければ「請求対象」、”キャンセル”なら「対象外」を返します。
これは=IF(E2<>"キャンセル", "請求対象", "対象外")と同じ結果ですが、NOT+ANDやNOT+ORの形で使うとより複雑な除外ロジックが書けます。
' キャンセルでも返品でもない場合に請求対象
=IF(NOT(OR(E2="キャンセル", E2="返品")), "請求対象", "対象外")
実務シナリオ1:ボーナス支給対象の判定(AND)
在籍期間が1年以上かつ直近評価がB以上の社員をボーナス支給対象とする判定の例です。
| 列 | 内容 |
|---|---|
| A列 | 氏名 |
| B列 | 在籍月数 |
| C列 | 直近評価(A/B/C) |
| D列(計算列) | 支給判定 |
' D2に入力する数式
=IF(AND(B2>=12, OR(C2="A", C2="B")), "支給対象", "対象外")
在籍12ヶ月以上(B2>=12)かつ評価がAまたはB(OR(C2=”A”, C2=”B”))という複合条件をANDとORで表現しています。「AかつBまたはC」という複合条件はAND( 条件X, OR( 条件Y, 条件Z ) )の形でネストします。
実務シナリオ2:在庫アラートの自動表示(OR)
在庫数が最低発注点を下回った場合、または在庫切れの場合にアラートを表示する管理シートの例です。
' G2(在庫数)がH2(最低発注点)未満またはG2が0の場合にアラート
=IF(OR(G2
G2=0は「在庫切れ」、G2<H2は「発注点を下回った状態」を表します。どちらかが成立した時点でアラートを出すことで、見落としを防ぎます。
実務シナリオ3:集計から除外する行のフラグ立て(NOT)
受注データで「キャンセル」「無効」と記録された行を集計から除外するためのフラグ列を設定する例です。
' I2(ステータス)がキャンセルでも無効でもない場合に"集計対象"
=IF(NOT(OR(I2="キャンセル", I2="無効")), "集計対象", "除外")
フラグ列に「集計対象」が入った行だけをSUMIF・COUNTIFの条件に使えるため、ステータス管理と集計ロジックを分離できます。
AND・OR・NOTを組み合わせた複合条件パターン
実務では複数の論理関数を入れ子にして使うケースが頻繁にあります。主なパターンを整理します。
| パターン | 数式の構造 | 意味 |
|---|---|---|
| AかつB | =IF(AND(条件A, 条件B), …) | 両方の条件が成立する場合のみ真 |
| AまたはB | =IF(OR(条件A, 条件B), …) | どちらか一方でも成立すれば真 |
| Aではない | =IF(NOT(条件A), …) | 条件Aが成立しない場合に真 |
| AかつBではない | =IF(AND(条件A, NOT(条件B)), …) | Aは成立するがBは成立しない場合に真 |
| AまたはBでもない | =IF(NOT(OR(条件A, 条件B)), …) | AもBもどちらも成立しない場合に真 |
| (AかつB)またはC | =IF(OR(AND(条件A, 条件B), 条件C), …) | AとBが両方揃う、またはCが成立すれば真 |
ポイント:ANDとORを組み合わせる場合、「どちらが外側か」で意味が変わります。AND( 条件X, OR( 条件Y, 条件Z ) )は「XかつYまたはZ」、OR( AND( 条件X, 条件Y ), 条件Z )は「XとYの両方またはZ」と異なる意味になります。日本語の論理をそのまま式に落とし込む前に、AND・OR の優先関係を明確にしてください。
入れ子IFとの比較:AND・OR・NOTを使うメリット
複数条件の分岐を入れ子IFだけで書こうとすると、条件が増えるにつれて数式が読みにくくなります。AND・OR・NOTを活用するとどのように変わるかを比較します。
' 入れ子IFだけで書いた場合(3条件)
=IF(A2>=80, IF(B2="正社員", IF(C2<>"退職", "対象", "対象外"), "対象外"), "対象外")
' AND・NOTで書き直した場合(読みやすい)
=IF(AND(A2>=80, B2="正社員", NOT(C2="退職")), "対象", "対象外")
AND関数を使った式は条件が横並びになるため、「どの条件を全て満たす必要があるか」が一目でわかります。
| 比較項目 | 入れ子IFのみ | AND・OR・NOT活用 |
|---|---|---|
| 条件の追加しやすさ | ネストが深くなるほど修正箇所が増える | AND・OR の引数を追加するだけ |
| 読みやすさ | 条件数が3以上で急激に難読化 | 条件が多くても横並びで読める |
| エラーの見つけやすさ | 括弧の対応を手動で確認が必要 | 引数の区切りが明確 |
| 使えるExcelバージョン | すべてのバージョン | すべてのバージョン |
IFS関数との使い分け
Excel 2019以降・Microsoft 365ではIFS関数が利用できます。IFSは複数の「条件→結果」の組を順番に評価する関数で、入れ子IFの代替として使われます。
' IFS関数の例(評価ランクの振り分け)
=IFS(A2>=90, "S", A2>=80, "A", A2>=70, "B", A2>=60, "C", TRUE, "D")
IFSとAND・OR・NOTの使い分けは次のように考えると整理しやすくなります。
| 使い分け | 向いているケース |
|---|---|
| IFS関数 | 同一列の値によって複数のラベルを振り分ける。スコアに応じた5段階評価など、単一条件軸の多分岐 |
| IF+AND | 異なる列にまたがる複数の条件を全て満たすか判定する。「A列が〇〇かつB列が〇〇かつC列が〇〇」 |
| IF+OR | 複数の値や状態のうちいずれかに該当するかをまとめて判定する |
| IF+NOT | 特定の値を除外する、または条件を反転させる |
条件軸が複数列にまたがる場合はAND・OR・NOT、単一列の値で多分岐させる場合はIFSが適しています。両者を組み合わせることもできます。
よくあるエラーと対処法
| 症状・エラー | 原因 | 対処法 |
|---|---|---|
| #VALUE! | AND・OR・NOTの引数に文字列や空白が混入している | 比較演算子を使った論理式(A2>=100など)を引数に渡す。数値セルが文字列型になっていないか確認する |
| 常にFALSEになる | 文字列条件でスペースや全角・半角が混在している(例:"VIP "と"VIP"が異なる文字列として扱われる) | TRIMで余分なスペースを除去してから比較する。EXACT関数で完全一致を確認する |
| 条件が意図通りに機能しない | ANDとORのネストの外側・内側を逆にしている | 日本語で「かつ」「または」を書き出してからAND・OR に変換する。括弧の対応を確認する |
| #NAME? | 関数名のスペルミス(ANDをAMDと入力するなど) | 関数名を正しく入力する。関数の挿入ダイアログで「論理」カテゴリから選択すると間違いが防げる |
COUNTIF・SUMIFとの組み合わせ
AND・OR・NOTはIF関数との組み合わせで使うことが多いですが、COUNTIF・SUMIFでは直接使用できない点に注意が必要です。複数条件の集計にはCOUNTIFS・SUMIFSを使います。
' 複数条件の件数カウント(ANDに相当)→ COUNTIFSを使う
=COUNTIFS(A2:A100, "東京", B2:B100, ">=100")
' "キャンセル"でも"返品"でもない行のカウント(NOTに相当)→ 2つのCOUNTIFを引く
=COUNTA(C2:C100) - COUNTIF(C2:C100, "キャンセル") - COUNTIF(C2:C100, "返品")
' IFを補助列として使い、ANDで絞り込んだ結果を集計する方法
' J列に =IF(AND(A2="東京", B2>=100), "対象", "") のような補助列を作り
' =COUNTIF(J2:J100, "対象") で集計する
「ORで複数値のどれかに一致する行の合計」はSUMPRODUCT関数で記述するのが最も柔軟です。AND・OR・NOTはIF関数の補助として最も力を発揮しますが、集計関数との連携はSUMIFS・COUNTIFS・SUMPRODUCTも合わせて使い分けることが重要です。
MOS試験でのAND・OR・NOT出題ポイント
MOS Excel試験(Excel 365・2021)では「数式と関数の使用」のスキル項目に論理関数が含まれています。以下の操作が問われます。
- IF+AND の数式入力:指定された複数条件を全て満たす場合に特定の値を返す数式をセルに正しく入力できる
- IF+OR の数式入力:いずれかの条件を満たす場合に特定の値を返す数式を入力できる
- 論理式の読み解き:既存の数式が何を判定しているかを理解できる
- AND・OR の引数の順序:引数はカンマ区切りで最大255個まで指定できることを理解している
- IFとの組み合わせ構造:=IF( AND(…), 真の場合, 偽の場合 ) の括弧の対応を正確に書ける
MOS試験 論理関数操作チェックリスト
| 確認ポイント | 操作内容 | 難易度 |
|---|---|---|
| AND関数の基本入力 | =AND(条件1, 条件2)を正しく入力してTRUE/FALSEが返ることを確認できる | ★☆☆ |
| OR関数の基本入力 | =OR(条件1, 条件2)を正しく入力してTRUE/FALSEが返ることを確認できる | ★☆☆ |
| NOT関数の基本入力 | =NOT(条件)を入力して条件の真偽が反転することを確認できる | ★☆☆ |
| IF+AND の組み合わせ | =IF(AND(条件A, 条件B), "真の値", "偽の値")を正しく入力できる | ★★☆ |
| IF+OR の組み合わせ | =IF(OR(条件A, 条件B), "真の値", "偽の値")を正しく入力できる | ★★☆ |
| AND・OR のネスト | =IF(AND(条件A, OR(条件B, 条件C)), "真の値", "偽の値")の括弧を正確に入力できる | ★★★ |
| NOT+OR の除外条件 | =IF(NOT(OR(条件A, 条件B)), "真の値", "偽の値")を入力して除外ロジックを表現できる | ★★★ |
| 入れ子IFとの違い | AND関数を使うとIFのネストを浅くできる利点を説明できる | ★★☆ |
まとめ:AND・OR・NOTでIF関数の条件を自在に組み立てる
本記事のポイントをまとめます。
- AND関数:全引数がTRUEのときのみTRUEを返す。「AかつB」の条件をIF関数の第1引数にそのまま渡せる
- OR関数:いずれかの引数がTRUEならTRUEを返す。「AまたはB」の条件をひとつの関数にまとめられる
- NOT関数:引数の真偽値を反転させる。「〇〇ではない」という除外条件を明示的に表現できる
- IF+AND:複数列にまたがる全条件を満たしたときの分岐に最適。入れ子IFより読みやすく修正もしやすい
- IF+OR:複数の値や状態のいずれかに該当するかの判定をひとつの式にまとめられる
- AND・OR のネスト:組み合わせて「AかつBまたはC」のような複合条件も表現可能。外側と内側の関数を日本語の論理に合わせて選ぶ
- IFSとの使い分け:単一列の多段階評価はIFS、複数列の複合条件はAND・OR・NOTが適する
- MOS試験では:IF+AND・IF+ORの入力が出題の中心。括弧の対応とAND・OR・NOTの優先関係を正確に理解しておく
AND・OR・NOT関数はExcelの論理演算の基礎であり、ほぼすべての業務シートで活用できます。入れ子IFで読みにくくなった数式を見かけたら、AND・OR・NOTへの書き換えを試みてください。条件の追加・変更がはるかに楽になり、数式のミスも減らせます。MOS試験の数式・関数問題では、これらの論理関数の組み合わせを正確に入力できることが得点の鍵になります。
PR
AND・OR・NOTをはじめExcelの全関数を実務シナリオ別に解説した定番リファレンス。Copilot連携の新機能にも対応しており、関数の使い方を体系的に身につけたい方に最適な一冊です。
PR
MOS Excel 365試験の公式対策書。IF+AND・IF+ORといった論理関数の出題パターンを含む全範囲を網羅し、模擬問題と解説でスコアアップを狙えます。試験本番前の総仕上げにおすすめです。
