人事・総務・経理の仕事では、「条件Aと条件Bを両方満たす人だけを抽出したい」「条件Aか条件Bのどちらかを満たせばOKにしたい」といった、複数の条件を組み合わせた判定をする場面が数多くあります。条件が1つだけならIF関数だけで十分ですが、条件が2つ以上になった途端に「IFだけでどう書けばいいのか分からない」と手が止まる方は少なくありません。ここで登場するのがAND関数とOR関数です。この記事では、AND・ORの基本的な使い方から、IFと組み合わせずに使うと起きる「TRUE/FALSEしか出ない」問題、ANDとORを取り違えて起きる判定ミス、実務での具体的な使用例までをまとめて解説します。

AND・OR関数の基本とIFとの組み合わせ方

AND関数とOR関数は、どちらも複数の条件をまとめて1つの論理値(TRUE/FALSE)に変換する関数です。AND関数はすべての条件を満たしたときだけTRUEを返し、OR関数はいずれか1つでも条件を満たせばTRUEを返します。

=AND(条件1, 条件2, ...)
=OR(条件1, 条件2, ...)

例:勤続年数(A1)が3以上、かつ年齢(B1)が20以上の場合にTRUEを返す
=AND(A1>=3,B1>=20)

ここで重要なのは、AND関数・OR関数はあくまで判定結果をTRUE/FALSEとして返すだけで、「対象」「対象外」のような任意の文字列を表示する機能は持っていないという点です。実務で使う数式のほとんどは、AND・ORをIF関数の条件式部分(第1引数)に組み込む形で使います。

=IF(AND(A1>=3,B1>=20),"対象","対象外")

ANDとORの違いを整理する

AND(かつ)

  • すべての条件を満たす場合のみTRUE
  • 1つでも満たさない条件があればFALSE
  • 対象者を厳しく絞り込む判定に向く

OR(または)

  • いずれか1つの条件を満たせばTRUE
  • 全部の条件を満たさない場合のみFALSE
  • 該当者を広く拾う判定に向く

組み合わせ

  • AND関数の中にOR関数を入れ子にできる
  • 例:部署が営業、かつ役職が課長または部長
  • カッコの範囲を意識して書く

AND関数とOR関数は組み合わせて使うこともできます。たとえば「部署が営業部で、かつ役職が課長または部長」という条件は、=AND(C1="営業部",OR(D1="課長",D1="部長"))のように、OR関数をAND関数の中に入れ子にして書きます。

実務でのよくある使用シーン

総務担当者であれば、福利厚生制度の対象者を抽出する場面でAND関数がよく使われます。たとえば「勤続年数が3年以上、かつ年齢が20歳以上」という2つの条件を両方満たす社員だけを対象にしたい場合、=IF(AND(勤続年数>=3,年齢>=20),"対象","対象外")のように書けば、条件を1つでも満たさない社員は自動的に「対象外」と判定されます。名簿を1人ずつ目で見比べる必要がなくなり、数百人規模でもミスなく抽出できます。経理担当者であれば、稟議や支払いの承認フローで「上長Aまたは上長Bのどちらかが承認済みであれば次の処理に進める」という判定にOR関数を使います。=IF(OR(上長A承認欄="承認",上長B承認欄="承認"),"処理可","未承認")と書いておけば、どちらか一方が承認した時点で自動的に処理可能なステータスに切り替わり、承認待ちの案件を目視で追いかける手間が減ります。営業事務担当者であれば、受注案件のうち「見積金額が100万円以上、または特定の大口顧客からの注文」を上長確認案件として自動的にフラグ立てするような場面でOR関数を使うこともあります。

AND・ORでよくあるエラー・トラブルと対処法

TRUE/FALSEしか表示されない

AND関数・OR関数をIFに組み込まず、セルに直接AND・ORだけを入力すると、セルには「対象」でも「対象外」でもなく、TRUEまたはFALSEという論理値がそのまま表示されます。「思っていた表示にならない」と戸惑う初心者が非常に多いポイントです。

例:=AND(A1>=3,B1>=20) → セルには TRUE としか表示されない

対処法は、AND・ORを単体で使うのではなく、必ずIF関数の条件式部分に組み込むことです。=IF(AND(A1>=3,B1>=20),"対象","対象外")のように書き換えれば、任意の文字列を表示できます。

判定結果が想定と違う(ANDとORの取り違え)

「複数の条件を同時に満たす人だけを抽出したい」つもりでOR関数を使ってしまい、実際にはどれか1つ満たすだけで対象になってしまうミスがよく起こります。

例:本来はAND(勤続年数>=3,年齢>=20)とすべきところをOR(勤続年数>=3,年齢>=20)と書いてしまい、勤続1年でも21歳なら「対象」と判定されてしまう

対処法として、数式を書く前に「かつ(すべて満たす)」なのか「または(1つでもよい)」なのかを日本語で確認してから、それぞれAND・ORに置き換える習慣をつけましょう。数式を作った後は、条件のどちらか一方だけを満たすテストデータで検算すると取り違えに気づきやすくなります。

条件が多すぎて、どこで間違っているか分からない

AND・ORの引数に5個、6個と比較式を詰め込むと、1つの数式が横に長くなり、どの条件でFALSEになっているのかをぱっと見で判断できなくなります。

例:=IF(AND(A1>=3,B1>=20,C1="在籍中",D1<>"休職",E1>=80),"対象","対象外") のように条件が並ぶと見直しが困難

対処法として、各条件をあらかじめ別々のセルに分けてTRUE/FALSEを計算しておき、AND・ORの引数にはそのセル参照だけを並べる方法がおすすめです。どの条件がFALSEになっているかをセル単位で一目で確認でき、修正すべき箇所をすぐに特定できます。

初心者がつまずきやすいポイントとコツ

まとめ

AND関数は複数の条件をすべて満たすかどうか、OR関数はいずれか1つでも満たすかどうかを判定する関数で、どちらもIF関数と組み合わせて初めて実務で使える数式になります。「かつ」はAND、「または」はORという対応関係を意識し、条件が増えてきたら補助列に分けて可読性を保つことが、判定ミスを防ぐ一番の近道です。数式を一から組み立てるのが不安な方は、下のツールで日本語の空欄を埋めるだけで数式を作成できます。

よくある質問

AND関数やOR関数をそのままセルに入力すると、TRUEやFALSEしか表示されないのはなぜですか?
AND関数・OR関数はそれ自体が「条件を満たすかどうか」をTRUE/FALSEの論理値で返す関数だからです。「条件を満たしたら特定の文字や数値を表示したい」場合は、AND関数・OR関数を単体で使うのではなく、IF関数の中に組み込み、=IF(AND(条件1,条件2),"表示したい値","それ以外の値")のように記述する必要があります。
「AかつB」と「AまたはB」、AND関数とOR関数のどちらに対応するのか混同してしまいます。
日本語の「かつ」はAND関数(すべての条件を満たす場合にTRUE)、「または」はOR関数(いずれか1つでも条件を満たせばTRUE)に対応します。逆に使うと、本来1人も対象にならないはずの条件で全員が対象になってしまう、あるいはその逆といった致命的な判定ミスにつながるため、数式を書く前に「すべて満たす必要があるのか」「どれか1つでよいのか」を日本語で確認する習慣をつけると安全です。
AND関数・OR関数の条件を増やしすぎると、どこが間違っているか分かりにくくなります。対処法はありますか?
条件が5個・6個と増えてくると、括弧の中に長い比較式が並び可読性が落ちます。対処法として、各条件をあらかじめ別のセルに分けてTRUE/FALSEを計算し、AND関数・OR関数ではそのセル参照だけを指定する方法があります。どの条件でFALSEになっているかをセル単位で確認できるため、原因の切り分けが格段に楽になります。

関連記事

→ AND/ORの数式を作ってみる ← 記事一覧に戻る