はじめに
Excelで「複数の条件を組み合わせて判定したい」と思ったことはありませんか?
たとえば、こんな場面です。
- 「点数が60点以上 かつ 出席率が80%以上なら合格」
- 「役職が部長 または 課長なら管理職手当を支給」
- 「在庫切れ ではない 商品だけ表示したい」
こうした 「かつ」「または」「ではない」 をExcelで表現するのが、今回ご紹介する AND関数・OR関数・NOT関数 です。
この3つは「論理演算」と呼ばれる仲間で、IF関数とセットで使うと真価を発揮します。難しそうに聞こえますが、実は仕組みはとてもシンプル。ひとつずつ見ていきましょう。
そもそも「論理演算」とは?
論理演算とは、ひとことで言うと 「TRUE(真)」と「FALSE(偽)」だけを扱う計算 のことです。
Excelの世界では、条件式の結果は必ずこの2つのどちらかになります。
| 条件式 | 結果 |
|---|---|
=10>5 | TRUE |
=10<5 | FALSE |
=A1="りんご" | A1が「りんご」ならTRUE、それ以外ならFALSE |
このTRUE/FALSEを 組み合わせたり反転させたり するのが、AND・OR・NOT関数の役割です。
💡 ポイント:TRUE/FALSEは画面では「TRUE」「FALSE」と表示されますが、内部では TRUE=1、FALSE=0 として扱われます。これを知っておくと応用が効きます。
AND関数 ― 「すべての条件を満たす」を判定する
AND関数の役割
AND関数は 「指定したすべての条件がTRUEのときだけTRUEを返す」 関数です。日本語の「かつ」にあたります。
基本の書き方
=AND(論理式1, 論理式2, ...)
| 引数 | 意味 |
|---|---|
| 論理式 | TRUE/FALSEになる条件式(最大255個まで指定可) |
例1:点数が60点以上「かつ」80点以下を判定
| A列(点数) | |
|---|---|
| 1行目 | 75 |
excel
=AND(A1>=60, A1<=80)
→ 結果:TRUE
A1の値「75」は 60以上 かつ 80以下 の両方を満たすので、TRUEになります。
例2:1つでも条件を満たさないとFALSE
excel
=AND(A1>=60, A1<=70)
→ 結果:FALSE
A1の値「75」は60以上はクリアしていますが、70以下を満たしていないので FALSE になります。
AND関数の真理値表
| 論理式1 | 論理式2 | AND結果 |
|---|---|---|
| TRUE | TRUE | TRUE |
| TRUE | FALSE | FALSE |
| FALSE | TRUE | FALSE |
| FALSE | FALSE | FALSE |
全部TRUEのときだけTRUE ― これがAND関数の合言葉です。
OR関数 ― 「どれか1つでも満たす」を判定する
OR関数の役割
OR関数は 「指定した条件のうち、どれか1つでもTRUEならTRUEを返す」 関数です。日本語の「または」にあたります。
基本の書き方
=OR(論理式1, 論理式2, ...)
例1:役職が「部長」または「課長」かを判定
| A列(役職) | |
|---|---|
| 1行目 | 課長 |
excel
=OR(A1="部長", A1="課長")
→ 結果:TRUE
A1は「課長」なので、2つ目の条件を満たし TRUE になります。
例2:どちらの条件も満たさないとFALSE
| A列(役職) | |
|---|---|
| 1行目 | 主任 |
excel
=OR(A1="部長", A1="課長")
→ 結果:FALSE
A1は「主任」で、どちらの条件も満たさないので FALSE です。
OR関数の真理値表
| 論理式1 | 論理式2 | OR結果 |
|---|---|---|
| TRUE | TRUE | TRUE |
| TRUE | FALSE | TRUE |
| FALSE | TRUE | TRUE |
| FALSE | FALSE | FALSE |
全部FALSEのときだけFALSE ― 逆に言うと、1つでもTRUEがあればTRUEになります。
NOT関数 ― 結果を「反転」させる
NOT関数の役割
NOT関数は 「TRUEをFALSEに、FALSEをTRUEに反転させる」 関数です。日本語の「〜ではない」にあたります。
基本の書き方
=NOT(論理式)
引数は 1つだけ です(ANDやORと違って複数指定できません)。
例1:在庫が0ではないかを判定
| A列(在庫数) | |
|---|---|
| 1行目 | 0 |
excel
=NOT(A1=0)
→ 結果:FALSE
A1=0は「TRUE」ですが、NOTで反転されて FALSE になります。 つまり「在庫が0ではない」という条件には当てはまらない、という意味です。
例2:在庫がある商品を判定
| A列(在庫数) | |
|---|---|
| 1行目 | 5 |
excel
=NOT(A1=0)
→ 結果:TRUE
A1=0は「FALSE」ですが、NOTで反転されて TRUE になります。 「在庫が0ではない=在庫がある」と判定できました。
NOT関数の真理値表
| 論理式 | NOT結果 |
|---|---|
| TRUE | FALSE |
| FALSE | TRUE |
シンプルに 反対の値を返す だけです。
IF関数と組み合わせて実務で使う
AND・OR・NOT関数は、単独で使うとTRUE/FALSEを返すだけです。実務では IF関数の中に組み込んで 使うことがほとんどです。
例1:AND × IF ― 合格判定
「点数が60点以上 かつ 出席率が80%以上なら『合格』、それ以外なら『不合格』」
| A列(点数) | B列(出席率) | |
|---|---|---|
| 1行目 | 75 | 90% |
excel
=IF(AND(A1>=60, B1>=0.8), "合格", "不合格")
→ 結果:合格
例2:OR × IF ― 管理職判定
「役職が『部長』 または 『課長』なら『管理職』、それ以外なら『一般』」
| A列(役職) | |
|---|---|
| 1行目 | 部長 |
excel
=IF(OR(A1="部長", A1="課長"), "管理職", "一般")
→ 結果:管理職
例3:NOT × IF ― 在庫なしを除外
「在庫が0 ではない なら『販売中』、0なら『在庫切れ』」
| A列(在庫数) | |
|---|---|
| 1行目 | 0 |
excel
=IF(NOT(A1=0), "販売中", "在庫切れ")
→ 結果:在庫切れ
例4:AND + OR の組み合わせ技
「(点数が60点以上 かつ 出席率80%以上) または 補習を受講した人を『合格』にする」
| A列(点数) | B列(出席率) | C列(補習受講) | |
|---|---|---|---|
| 1行目 | 50 | 70% | 受講 |
excel
=IF(OR(AND(A1>=60, B1>=0.8), C1="受講"), "合格", "不合格")
→ 結果:合格
ANDとORを入れ子(ネスト)にすることで、複雑な条件も表現できます。
早見表 ― 3つの関数の使い分け
| 関数 | 日本語 | 条件 | 使う場面 |
|---|---|---|---|
| AND | 〜かつ〜 | すべて満たす | 全部の条件をクリアさせたい |
| OR | 〜または〜 | どれか1つ満たす | いずれかを満たせばOKにしたい |
| NOT | 〜ではない | 反転させる | 「除外」「逆」を表現したい |
つまずきやすいポイント
ポイント①:条件式は必ず「TRUE/FALSE」になる形で書く
❌ 間違い:
excel
=AND(A1, B1)
A1やB1の中身が数字や文字の場合、これでは正しく判定できません(0以外の数値はTRUE扱いになるので意図しない動作になることも)。
⭕ 正解:
excel
=AND(A1>=60, B1>=80)
「○○ >= ××」「○○ = ××」のように、比較式の形で書く のが基本です。
ポイント②:カンマで区切ることを忘れない
ANDやOR関数は、引数(論理式)を カンマ(,) で区切ります。
❌ 間違い:=AND(A1>=60 B1>=80) (スペース区切り) ⭕ 正解:=AND(A1>=60, B1>=80)
ポイント③:文字列は「”(ダブルクォーテーション)」で囲む
文字列を比較するときは、必ずダブルクォーテーションで囲みます。
❌ 間違い:=OR(A1=部長, A1=課長) ⭕ 正解:=OR(A1="部長", A1="課長")
ポイント④:NOTの引数は「1つだけ」
NOT関数だけは、引数を1つしか指定できません。複数の条件を反転させたいときは、ANDやORの結果をNOTで囲みます。
excel
=NOT(AND(A1>=60, B1>=80))
↑「60点以上 かつ 80点以上 ではない」という意味になります。
ポイント⑤:「ド・モルガンの法則」を覚えておくと便利
数学っぽい話で恐縮ですが、論理演算には便利な変換ルールがあります。
NOT(AND(条件1, 条件2))=OR(NOT(条件1), NOT(条件2))NOT(OR(条件1, 条件2))=AND(NOT(条件1), NOT(条件2))
つまり、NOTを内側に入れるとANDとORがひっくり返る ということ。数式が複雑になりすぎたとき、シンプルな形に書き直すヒントになります。
まとめ
| 関数 | 役割 | 覚え方 |
|---|---|---|
| AND | すべての条件が真ならTRUE | 「全部○なら○」 |
| OR | どれか1つでも真ならTRUE | 「1つでも○なら○」 |
| NOT | 真偽を反転 | 「○を×に、×を○に」 |
AND・OR・NOTは、単独で使うとTRUE/FALSEを返すだけのシンプルな関数です。でも IF関数と組み合わせることで、実務で本当に必要な「複雑な条件判定」を一気に表現できる ようになります。
最初は「3つもあって覚えにくい…」と感じるかもしれませんが、日本語の「かつ・または・〜ではない」に置き換えて考えれば、意外とすんなり身につきます。ぜひ手元のExcelで、実際に手を動かしながら試してみてください。
💼 経理マンの一言
経理の現場では、AND・OR・NOT関数を 「条件付きチェック」「異常値検知」「区分判定」 の3つの場面で本当に頻繁に使います。
私が新人の頃、上司から「経理は『条件分岐の連続』だぞ」と言われたのを今でも覚えています。たとえば、こんな場面です。
- 取引先の与信チェック:取引金額が100万円超 かつ 与信枠を超える先は「要承認」と表示
- 経費精算のエラー検出:領収書日付が当月 ではない または 上司承認 ではない ものを「差戻し」
- インボイス対応の判定:適格請求書 かつ 税率10% かつ 課税仕入の場合のみ仕入税額控除可
特に インボイス制度導入後 は、複数条件の組み合わせ判定が爆発的に増えました。「適格請求書発行事業者かどうか」「税率が複数混在していないか」「免税事業者からの仕入で経過措置の対象かどうか」など、判定ロジックがどんどん複雑になっています。これらをAND・OR・NOTを使わずに書こうとすると、IF関数を何重にもネストすることになって、もう誰にも読めない数式になってしまいます。
私の実務でのコツを3つお伝えします。
①「日本語に翻訳しながら書く」 複雑な条件式を書くときは、まず日本語で「Aかつ(BまたはC)である場合」と書き出してから、それをそのままExcelの式に翻訳します。これだけでミスがぐっと減ります。
②「ANDとORは色分けでメモ」 私の手元の数式メモには、ANDは青、ORは赤でマーキングしています。あとから見返したときに、論理構造が一目で分かります。
③「テスト用のデータで必ず動作確認」 本番データに適用する前に、「全条件TRUE」「全条件FALSE」「境界値(60点ちょうど、など)」の3パターンで必ず動作確認します。特に 「>=」と「>」、「<=」と「<」の取り違え は、決算で大事故を起こす定番ミスです。
経理という仕事は、毎月・毎四半期・毎年と同じ作業を繰り返す部分が多いですが、その中で 「判定ロジックを正確に組み立てる力」 が成果を大きく左右します。AND・OR・NOTは地味な関数ですが、経理マンにとっては 「正確性を担保する命綱」 のような存在です。ぜひマスターして、ミスのない経理業務を実現していきましょう!


コメント