AND・OR関数の練習問題(全5問)
色のついたセルに数式を入力して Enter。範囲はドラッグでも選べます。
60点以上80点未満を判定する
C2 に、点数が60点以上かつ80点未満なら「良」、そうでなければ「他」と表示してください。
ヒント 1
「60<=B2<80」とは書けません。条件を2つに分けて AND でつなぎます。
ヒント 2
「=IF(AND(B2>=60,B2<80),"良","他")」。IFの条件の場所に AND ごと入れます。
解説を見る
「60<=B2<80」と書くとエラーは出ませんが、どの点数でも「他」になります。Excel は左から2つずつ比べるため、まず 60<=B2 が TRUE か FALSE になり、次にその結果と 80 を比べます。Excel では論理値がどんな数値よりも大きいので、2段目は必ず FALSE です。「60以上」と「80未満」を別々の条件として AND に渡してください。
模範解答: =IF(AND(B2>=60,B2<80),"良","他")
どちらか一方でも満たせばよい
C2 に、国語か数学のどちらかが80点以上なら「合格」、どちらも届かなければ「不合格」と表示してください。
ヒント 1
「どちらか一方でも」は OR です。すべて満たす必要があるときが AND。
ヒント 2
「=IF(OR(B2>=80,C2>=80),"合格","不合格")」。
解説を見る
OR はどれか一つでも条件を満たせば TRUE になります。AND は条件を足すほど当てはまる件数が減り、OR は増えます。迷ったら「条件が厳しくなるほうが AND」と考えてください。
模範解答: =IF(OR(B2>=80,C2>=80),"合格","不合格")
部署と点数の両方で絞る
D2 に、部署が「営業」かつ点数が70点以上なら「対象」、そうでなければ空欄("")を表示してください。
ヒント 1
文字の条件は " で囲みます。「B2="営業"」。
ヒント 2
空欄を返すときは "" と書きます。「=IF(AND(B2="営業",C2>=70),"対象","")」。
解説を見る
AND には文字の比較も数値の比較も混ぜて渡せます。どちらか一方でも満たさなければ FALSE になり、空欄が表示されます。なお「営業で70点以上の人数」を数えたいだけなら、AND ではなく COUNTIFS を使うほうが簡単です。
模範解答: =IF(AND(B2="営業",C2>=70),"対象","")
退職でも休職でもない人を選ぶ
C2 に、状態が「退職」でも「休職」でもなければ「在籍」、どちらかなら「対象外」と表示してください。
ヒント 1
「退職または休職」を OR でまとめてから、NOT でひっくり返します。
ヒント 2
「=IF(NOT(OR(B2="退職",B2="休職")),"在籍","対象外")」。
解説を見る
NOT は判定をひっくり返します。「AでもBでもない」は、まず OR でまとめてから NOT で否定すると素直に書けます。「=IF(AND(B2<>"退職",B2<>"休職"),…)」と、<>(等しくない)を並べても同じ結果になります。条件が増えるときは前者のほうが書き換えが楽です。
模範解答: =IF(NOT(OR(B2="退職",B2="休職")),"在籍","対象外")
AND の中に OR を入れる
D2 に、部署が「営業」かつ、国語か数学のどちらかが80点以上なら「表彰」、そうでなければ空欄を表示してください。
ヒント 1
「営業 かつ(国語80以上 または 数学80以上)」という形です。カッコのまとまりを日本語で読み直してみてください。
ヒント 2
OR を AND の中に入れます。「=IF(AND(A2="営業",OR(B2>=80,C2>=80)),"表彰","")」。
解説を見る
AND と OR は入れ子にできますが、どちらが外側かで意味が変わります。この式では AND が外側なので「営業であること」は必ず必要で、点数のほうはどちらか一方で構いません。書いたあとに日本語へ直して読むと、カッコの位置の間違いに気づけます。
模範解答: =IF(AND(A2="営業",OR(B2>=80,C2>=80)),"表彰","")
AND関数はすべての条件を満たすか、OR関数はどれか一つでも満たすかを判定する関数です。IFと組み合わせて使います。
- 書き方
=AND(条件1, 条件2, ...)- 例
=IF(AND(B2>=60,B2<80),"良","他")
条件を組み合わせる3つの関数
IF関数 は条件を1つしか書けません。「60点以上かつ80点未満」のように条件が増えたときに使うのが、この3つです。
| 関数 | 判定 |
|---|---|
AND |
すべて満たすか(かつ) |
OR |
どれか一つでも満たすか(または) |
NOT |
判定をひっくり返す(〜でない) |
=AND(B2>=60, B2<80) → TRUE / FALSE
条件をカンマで並べるだけです。いくつでも書けます。
返ってくるのは TRUE か FALSE
AND や OR が返すのは TRUE か FALSE という論理値です。そのままだと表に「TRUE」と出るだけなので、ふつうは IF の中に入れて使います。
=IF(AND(B2>=60,B2<80), "良", "他")
IF の1つめ(条件)の場所に、AND ごと差し込む形です。この形が実務でいちばん多く出てきます。
つまずきポイント1: 「60以上80未満」を一つの式で書かない
数学では 60 ≦ x < 80 と書けます。その感覚で次のように書く人がとても多いのですが、これは動くのに必ず間違った結果になります。
=IF(60<=B2<80, "良", "他") ← 間違い
エラーは出ません。どの点数を入れても「他」になります。
| 点数 | 60<=B2<80 と書いた場合 |
正しく書いた場合 |
|---|---|---|
| 45 | 他 | 他 |
| 60 | 他 | 良 |
| 75 | 他 | 良 |
| 79 | 他 | 良 |
| 80 | 他 | 他 |
理由は、Excel が左から順に2つずつ比べるためです。
- まず
60<=B2を判定する →TRUEかFALSEが出る - 次に、その結果と
80を比べる →TRUE<80
そして Excel では、論理値は どんな数値よりも大きいと決まっています。だから TRUE<80 も FALSE<80 も FALSE です。何点であっても2段目で FALSE になり、結果は常に「他」になります。
エラーにならないのが厄介です。式の見た目は自然なので、間違いに気づかないまま表が完成してしまいます。
正しくは AND を使って、条件を2つに分けて書きます。
=IF(AND(B2>=60, B2<80), "良", "他") ← 正しい
「60以上」と「80未満」は別々の条件である、と考えるのがコツです。
つまずきポイント2: AND と OR を取り違える
日本語の「かつ」「または」と対応させると分かりやすくなります。
| 書きたいこと | 関数 |
|---|---|
| 営業部かつ60点以上 | AND |
| 営業部または開発部 | OR |
| 土曜または日曜 | OR |
| 在庫ありかつ未発送 | AND |
迷ったら、条件が厳しくなるほうが ANDと覚えてください。条件を足すたびに当てはまる件数が減るのが AND、増えるのが OR です。
NOT — 「〜でない」を書く
NOT は判定をひっくり返します。
=NOT(B2>=60) → 60未満なら TRUE
ただし、この例は =B2<60 と書けば済みます。NOT が本当に必要なのは、ひっくり返す対象が長いときです。
=IF(NOT(OR(B2="退職",B2="休職")), "在籍", "対象外")
「退職でも休職でもない」を、OR をまとめて否定する形です。条件が増えても書き換えずに済みます。
組み合わせるときの注意
AND と OR は入れ子にできます。ただしどちらが外側かで意味が変わります。
=AND(A2="営業", OR(B2>=80, C2>=80))
これは「営業部かつ(国語か数学のどちらかが80点以上)」です。カッコの位置で条件のまとまりが決まるので、日本語に直して読み直すと間違いに気づけます。
条件が3つ以上に増えて読みにくくなったら、判定用の列を1つ作って段階的に書くほうが安全です。1つの式に詰め込むより、あとから直しやすくなります。
空白セルと文字はどう扱われるか
範囲をまとめて渡したとき、文字列と空白セルは判定から外れます。
=AND(B2:B6)
B列に「欠席」のような文字が混ざっていても、エラーにはならず飛ばされます。数値は 0 が FALSE、それ以外が TRUE として扱われます。
なお、条件を1つも渡さないとエラーになります。
=AND() → #VALUE!
関連する関数
| 関数 | 用途 |
|---|---|
IF |
条件で表示を変える。AND・OR はこの中に入れて使う |
IFS |
条件を順に並べて判定する。IF の入れ子を減らせる |
COUNTIFS |
複数条件に合う件数を数える |
SUMIFS |
複数条件に合うものを合計する |
数えたい・合計したいだけなら、AND は要りません。 COUNTIFS や SUMIFS は条件を並べるだけで「かつ」の意味になります。AND が必要なのは、1行ごとに判定して表示を変えたいときです。
次に進むには
条件が3つ4つと増えて IF の入れ子が深くなってきたら、IFS に切り替えると読みやすくなります。
また、判定した結果を集計したいなら COUNTIFS・SUMIFS のほうが近道です。「1行ずつ判定する」のか「まとめて数える」のかで、使う関数が分かれます。