ExcelのAND関数・OR関数・NOT関数の使い方|IF関数との組み合わせで複数条件を判定
ExcelのAND関数・OR関数・NOT関数は、複数の条件を組み合わせるための論理関数です。IF関数と組み合わせることで「AかつB」「AまたはB」「Aでない」といった条件分岐が実現でき、業務の自動化に欠かせないスキルです。
たとえば「国語が70点以上かつ数学が70点以上なら合格」という判定や、「在庫が0または期限切れなら発注」といった処理も、AND・OR関数を使えば1つの数式でスッキリ書けます。
本記事では、AND・OR・NOT関数の基本的な使い方からIF関数との組み合わせ、実務で使える応用例まで、図解付きで丁寧に解説します。
- AND関数の使い方(AかつBの条件判定)
- OR関数の使い方(AまたはBの条件判定)
- NOT関数の使い方(条件の否定)
- IF関数との組み合わせで複数条件の分岐処理
- 実務で使える具体例(成績判定・合否判定・在庫管理など)
Sub 複合条件判定()
Dim ws As Worksheet
Set ws = ActiveSheet
Dim i As Long
For i = 2 To 6
Dim score1 As Long, score2 As Long
score1 = ws.Cells(i, “B”).Value
score2 = ws.Cells(i, “C”).Value
If score1 >= 70 And score2 >= 70 Then
ws.Cells(i, “D”).Value = “合格”
ElseIf score1 >= 90 Or score2 >= 90 Then
ws.Cells(i, “D”).Value = “条件付合格”
Else
ws.Cells(i, “D”).Value = “不合格”
End If
Next i
End Sub
| A | B | C | D | |
|---|---|---|---|---|
| 1 | 名前 | 筆記 | 実技 | 判定 |
| 2 | 田中 | 85 | 78 | 合格 |
| 3 | 鈴木 | 92 | 55 | 条件付合格 |
| 4 | 佐藤 | 60 | 65 | 不合格 |
| 5 | 山田 | 75 | 88 | 合格 |
| 6 | 高橋 | 50 | 95 | 条件付合格 |
☝ 条件の組み合わせを変更すれば柔軟な判定ロジックを構築できます
AND関数の使い方(AかつBを判定)
AND関数は、指定したすべての条件が成立している(TRUE)かどうかを判定する関数です。「条件1かつ条件2を満たすとき」という絞り込みに使います。
AND関数の基本構文
AND関数の構文は次のとおりです。
=AND(論理式1, 論理式2, …)- 論理式1:1つ目の条件(例:A2>=70)
- 論理式2:2つ目の条件(例:B2>=70)
- すべての条件が成立すれば TRUE、1つでも不成立なら FALSE を返す
- 論理式は最大255個まで指定可能
例として、国語の点数がA列、数学の点数がB列に入力されているとき、両方70点以上かどうかを確認する数式は次のようになります。
=AND(A2>=70, B2>=70)国語が80点・数学が75点であれば両方の条件を満たすため TRUE が返ります。国語が65点・数学が80点の場合は条件1が不成立なので FALSE が返ります。
AND関数単体では TRUE / FALSE しか返しません。「合格」「不合格」などの文字列を表示させたい場合は、次に解説する IF関数と組み合わせる 必要があります。
IF関数とANDの組み合わせ
実務では AND関数を IF関数の条件(第1引数)に入れて使うのが定番です。「すべての条件を満たすなら〇〇、そうでなければ××」という分岐処理ができます。
=IF(AND(条件1, 条件2), 真の場合, 偽の場合)具体例を見てみましょう。「国語70点以上かつ数学70点以上なら合格、そうでなければ不合格」を判定する数式です。
=IF(AND(A2>=70, B2>=70), "合格", "不合格")この数式の動きを確認します。
- AND(A2>=70, B2>=70) で2つの条件をまとめて判定
- AND がTRUEなら(両方70点以上)→「合格」を表示
- AND がFALSEなら(どちらか一方でも70点未満)→「不合格」を表示
売上管理の例も見てみましょう。C列が売上金額、D列が訪問件数のとき、「売上100万以上かつ訪問10件以上なら優良顧客」と判定する数式は次のようになります。
=IF(AND(C2>=1000000, D2>=10), "優良顧客", "通常")3つ以上の条件を指定する
AND関数は3つ以上の条件も指定できます(最大255個)。条件が増えても書き方は同じで、カンマで区切って追加するだけです。
例:「国語70点以上 かつ 数学70点以上 かつ 英語70点以上なら全科目合格」
=IF(AND(A2>=70, B2>=70, C2>=70), "全科目合格", "要再試験")条件が増えるほど厳しい絞り込みになります。「すべての条件を満たしたときだけ○○する」という場面でAND関数は活躍します。
AND関数を使わずに複数条件をIFだけで書こうとすると、=IF(A2>=70, IF(B2>=70, IF(C2>=70, “合格”, “不合格”), “不合格”), “不合格”) のようにネストが深くなります。AND関数を使えば1か所にまとまり、数式が読みやすくなります。
OR関数の使い方(AまたはBを判定)
OR関数は、指定した条件のうち少なくとも1つが成立している(TRUE)かどうかを判定する関数です。「条件1または条件2を満たすとき」という幅広い拾い上げに使います。
OR関数の基本構文
=OR(論理式1, 論理式2, …)- 論理式1:1つ目の条件(例:A2=”東京”)
- 論理式2:2つ目の条件(例:A2=”大阪”)
- いずれか1つでも成立すれば TRUE、すべて不成立なら FALSE を返す
- 論理式は最大255個まで指定可能
例として、A列に都市名が入っているとき、東京か大阪かを判定する数式は次のとおりです。
=OR(A2="東京", A2="大阪")A2が「東京」または「大阪」であれば TRUE、それ以外(例:名古屋、福岡など)であれば FALSE が返ります。
IF関数とORの組み合わせ
AND関数と同様に、OR関数も IF関数の第1引数に入れて使うのが基本です。「いずれかの条件を満たすなら〇〇、どれも満たさなければ××」という分岐ができます。
=IF(OR(条件1, 条件2), 真の場合, 偽の場合)具体例です。「国語か数学のどちらか一方でも90点以上なら特待生候補」と判定します。
=IF(OR(A2>=90, B2>=90), "特待生候補", "一般")在庫管理の例も紹介します。B列が在庫数、C列が有効期限(日付)のとき、「在庫が0または期限が今日以前なら発注要」と判定する数式です。
=IF(OR(B2=0, C2<=TODAY()), "発注要", "在庫あり")このように OR関数は「どれかに当てはまるものをすべて拾いたい」場面で非常に便利です。
- AND:全員が手を挙げたら TRUE(全条件クリア)
- OR:誰か1人でも手を挙げたら TRUE(1つでもクリア)
NOT関数の使い方(条件の否定)
NOT関数は、条件の結果を反転させる関数です。TRUE を FALSE に、FALSE を TRUE に変換します。「〇〇でない場合」という否定の条件を作るときに使います。
NOT関数の基本構文
=NOT(論理式)- 論理式:反転させたい条件(例:A2=”完了”)
- 論理式が TRUE なら FALSE、FALSE なら TRUE を返す
- 引数は1つのみ(ANDやORと異なり複数指定不可)
例として、A列のステータスが「完了」でないかどうかを確認します。
=NOT(A2="完了")A2が「完了」のとき FALSE(=「完了でない」は偽)、「未対応」や「処理中」のとき TRUE(=「完了でない」は真)が返ります。
IF関数とNOTの組み合わせ
NOT関数も IF関数の第1引数に組み込んで使います。「〇〇でないとき」という条件分岐が簡潔に書けます。
=IF(NOT(条件), 真の場合, 偽の場合)具体例です。「ステータスが完了でなければ対応が必要」とフラグを立てる数式です。
=IF(NOT(A2="完了"), "対応要", "")NOT関数は「=<>(等しくない)」という比較演算子でも代替できます。上の数式は =IF(A2<>”完了”, “対応要”, “”) と同じ結果になります。ただし、ANDやORと組み合わせる場合は NOT関数の形で書くほうが読みやすくなります。
- 単純な否定なら <> 演算子で十分なことが多い
- AND(NOT(…), 別条件) のように組み合わせる場合に NOT関数が威力を発揮する
- 条件式の意図を明確に示したいときにも有効
AND・OR・NOTを組み合わせた複合条件
AND・OR・NOT は単独でも使えますが、組み合わせることでより柔軟な条件式を作れます。ここでは実務でよく使われるパターンを解説します。
ANDとORのネスト例
「(条件AかつB) または 条件C」のような複合条件は、ANDとORを入れ子にして書きます。
例:「(国語80点以上かつ数学80点以上)または 英語が90点以上なら特進クラス」
=IF(OR(AND(A2>=80, B2>=80), C2>=90), "特進クラス", "普通クラス")逆に「条件AかつB、ただしCでない」という組み合わせも作れます。
例:「売上100万以上かつ新規顧客、ただしキャンペーン適用済でない場合はボーナス対象」
=IF(AND(C2>=1000000, D2="新規", NOT(E2="適用済")), "ボーナス対象", "-")AND・OR・NOTを入れ子にする場合、カッコの対応がずれるとエラーになります。数式バーで色分けされるカッコを目安に確認しましょう。数式を入力する前に日本語で「(A かつ B)または C」と条件を整理してから書くと、ミスが減ります。
実務例:成績評価(80点以上かつ出席率90%以上→A)
AND・OR・NOTを組み合わせた実務的な成績評価の例を紹介します。A列に点数、B列に出席率が入力されているとします。
評価基準を次のように設定します。
- A評価:80点以上 かつ 出席率90%以上
- B評価:70点以上 かつ 出席率80%以上(A評価を除く)
- C評価:それ以外
IFS関数を使って書くと次のようになります。
=IFS(AND(A2>=80, B2>=0.9), "A", AND(A2>=70, B2>=0.8), "B", TRUE, "C")IF関数のネストで書く場合は次のとおりです。
=IF(AND(A2>=80, B2>=0.9), "A", IF(AND(A2>=70, B2>=0.8), "B", "C"))このようにAND関数を使うことで、複数条件をまとめて判定し、評価をわかりやすく整理できます。出席率が低い場合はどんなに点数が高くてもA評価にならないため、AND関数による厳格な絞り込みが適しています。
COUNTIFS・SUMIFSとAND関数の使い分け
「複数条件でデータを扱う」といえば COUNTIFS・SUMIFS も定番です。AND関数とどう使い分ければよいか、整理しておきましょう。
- AND関数 + IF:1行1行の判定結果(ラベル・フラグ)を返す。「この行は合格か?」を判定したいときに使う
- COUNTIFS:複数条件を満たすセルの個数を集計する。「合格者は何人?」を集計したいときに使う
- SUMIFS:複数条件を満たすセルの合計値を集計する。「合格者の点数合計は?」を集計したいときに使う
一行ずつにフラグや評価を付けたいなら AND関数+IF、データ全体を集計したいなら COUNTIFS・SUMIFS を選びましょう。

AND/OR/NOT関数をVBAで自動化する方法
AND・OR関数の複合条件判定をVBAのIf文で自動化すれば、柔軟な判定ロジックを構築できます。
' 複合条件で合否を自動判定するマクロ
Sub 複合条件判定()
Dim ws As Worksheet
Set ws = ActiveSheet
Dim i As Long
For i = 2 To 6
Dim score1 As Long, score2 As Long
score1 = ws.Cells(i, "B").Value
score2 = ws.Cells(i, "C").Value
If score1 >= 70 And score2 >= 70 Then
ws.Cells(i, "D").Value = "合格"
ElseIf score1 >= 90 Or score2 >= 90 Then
ws.Cells(i, "D").Value = "条件付合格"
Else
ws.Cells(i, "D").Value = "不合格"
End If
Next i
End Sub
VBAマクロの実行結果は記事冒頭のインタラクティブデモで確認できます。ボタンを押すとアニメーションで動作をシミュレーションします。
よくある質問(FAQ)
Q. AND関数で3つ以上の条件は指定できますか?
はい、指定できます。AND関数・OR関数ともに最大255個の論理式を指定可能です。条件をカンマで区切って追加するだけです。ただし条件が多くなると数式が長くなり読みにくくなるため、補助列を使って条件を分割するか、名前付き範囲やLET関数で整理することをおすすめします。
Q. ANDとORの違いをわかりやすく教えてください
最もわかりやすい例えは「テスト合格」です。
- AND:「国語も数学もどちらも合格して初めて進級」→ 全科目クリアが必須
- OR:「国語か数学のどちらか一方でも合格すれば補講免除」→ 1つクリアすればOK
AND は条件を厳しくする(絞り込む)、OR は条件を緩くする(広げる)と覚えておくと迷いにくいです。
Q. COUNTIFS・SUMIFSとAND関数はどう使い分ければよいですか?
使い分けのポイントは「1行ごとの判定か 全体の集計か」です。
各行に「合格/不合格」などのラベルを付けたい場合は AND関数+IF を使います。「何人が合格したか」「合計売上はいくらか」を求めるなら COUNTIFS・SUMIFS が適しています。両方を組み合わせて、先に AND+IF で判定列を作り、その列を COUNTIF で集計する方法もよく使われます。
Q. IFS関数とIF+ANDの違いは何ですか?
IFS関数は「複数の条件を順番にチェックして最初に一致したものを返す」関数で、IF関数を何重にも入れ子にする代わりに使えます。
- IF+AND:1つの条件セット(複数の条件すべてを満たす)に対して真偽を判定するのが得意
- IFS:A評価・B評価・C評価のように複数の評価基準を順に確認するのが得意
実際には IFS の各条件に AND を組み込む(=IFS(AND(…), “A”, AND(…), “B”, TRUE, “C”))というパターンも多く使われます。IFS はExcel 2019以降・Microsoft 365で使用可能です。
Q. Googleスプレッドシートでもand・OR関数は使えますか?
はい、Googleスプレッドシートでも AND・OR・NOT関数はまったく同じ構文で使えます。=AND(A2>=70, B2>=70) のように書けばExcelと同じ結果が得られます。IFS関数も同様にスプレッドシートで使用可能です。クラウド環境でも同じ知識をそのまま活用できます。
実際の操作手順をクリックして体験できます。各ステップをクリックしてみましょう。
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | 名前 | 国語 | 数学 | AND判定 | OR判定 | NOT判定 |
| 2 | 85 | 78 | – 合格 不合格 合格 不合格 不合格 | – 補欠 補欠 補欠 補欠 対象外 | – 欠席なし 欠席あり 欠席なし 欠席なし 欠席あり | |
| 3 | 55 | 82 | ||||
| 4 | 92 | 88 | ||||
| 5 | 75 | 60 | ||||
| 6 | 45 | 50 |
AND: 両方70以上 → TRUE → 「合格」
OR: どちらか70以上 → TRUE → 「補欠」
NOT: NOT(欠席=FALSE) → 欠席なし
AND: 国語が70未満 → FALSE → 「不合格」(両方満たさないとNG)
OR: 数学が70以上 → TRUE → 「補欠」(どちらかでOK)
NOT: NOT(欠席=TRUE) → 欠席あり
AND: 両方70以上 → TRUE → 「合格」
OR: どちらも70以上 → TRUE → 「補欠」
NOT: NOT(欠席=FALSE) → 欠席なし
AND: 数学が70未満 → FALSE → 「不合格」
OR: 国語が70以上 → TRUE → 「補欠」(ORは1つでもTRUEならOK)
NOT: NOT(欠席=FALSE) → 欠席なし
AND: 両方70未満 → FALSE → 「不合格」
OR: どちらも70未満 → FALSE → 「対象外」(ORでも全てFALSEならNG)
NOT: NOT(欠席=TRUE) → 欠席あり
まとめ
ExcelのAND・OR・NOT関数について解説しました。それぞれのポイントを振り返ります。
- AND関数:すべての条件が成立するとTRUE。=AND(条件1, 条件2, …) で「かつ」の判定
- OR関数:1つでも条件が成立するとTRUE。=OR(条件1, 条件2, …) で「または」の判定
- NOT関数:条件の結果を反転。=NOT(条件) で「でない」の判定
- IF+AND/OR/NOT:論理関数をIFの第1引数に入れることで、結果として任意の文字列や値を返せる
- AND・OR・NOTは組み合わせて使うことで複雑な複合条件も表現できる
- 集計には COUNTIFS・SUMIFS が適しており、AND関数との使い分けが重要
AND・OR・NOT関数をマスターすると、IF関数の表現力が格段に上がります。まずは身近な業務データを使って「2つの条件を満たしたら〇〇」という簡単なIF+ANDから試してみましょう。
関連記事



VBA開発・GAS連携・Webアプリ化まで、
業務に合わせた最適な自動化をご提案します。
