「筆記も実技も70点以上なら合格」「どちらか一方でも70点以上なら合格」のように、条件を2つ以上組み合わせて判定したいことがあります。結論から言うと、AND関数は「すべての条件を満たすか」、OR関数は「どれか1つでも満たすか」を判定し、結果をTRUE(満たす)かFALSE(満たさない)で返す関数です。単独で使うより、IF関数と組み合わせて使うのが基本です。
AND関数・OR関数の基本構文
=AND(条件1,条件2,…)… すべての条件がTRUEのときだけTRUE。1つでもFALSEがあればFALSE=OR(条件1,条件2,…)… どれか1つでもTRUEならTRUE。すべてFALSEのときだけFALSE
条件は最大255個まで指定できます。条件にはB2>=70のような比較の式を書きます。
AND関数・OR関数で合否を判定する例
次のような試験結果の表(A1:C5)で考えます。
| A(氏名) | B(筆記) | C(実技) | |
|---|---|---|---|
| 2 | 佐藤 | 80 | 75 |
| 3 | 鈴木 | 65 | 90 |
| 4 | 田中 | 72 | 60 |
| 5 | 山本 | 55 | 50 |
A列=氏名、B列=筆記の点数、C列=実技の点数という対応で、2行目に次の数式を入れて下の行にコピーすると、結果は次のようになります。
| 数式(2行目) | 佐藤 | 鈴木 | 田中 | 山本 |
|---|---|---|---|---|
=AND(B2>=70,C2>=70) |
TRUE | FALSE | FALSE | FALSE |
=OR(B2>=70,C2>=70) |
TRUE | TRUE | TRUE | FALSE |
ANDは「両方70点以上」の佐藤さんだけがTRUE、ORは「どちらかが70点以上」の3人がTRUEで、両方70点未満の山本さんだけがFALSEになります。
IF関数とAND・ORを組み合わせて表示を分ける
TRUE・FALSEのままでは分かりにくいので、IF関数の条件部分にAND・ORを入れて「合格」「不合格」などと表示させます。B列=筆記、C列=実技です。
=IF(AND(B2>=70,C2>=70),"合格","不合格")
結果は佐藤さんが「合格」、ほか3人が「不合格」です。ANDをORに替えると、佐藤・鈴木・田中の3人が「合格」、山本さんだけが「不合格」になります。IF関数そのものの書き方はIF関数の基本的な使い方|条件で処理を分ける書き方で解説しています。
ANDとORは入れ子にもできます。たとえば「筆記が70点以上、かつ(実技が70点以上 または 筆記が90点以上)」なら=AND(B2>=70,OR(C2>=70,B2>=90))と書きます。条件が増えて読みにくくなったら、IFS関数で複数条件分岐をすっきり書く方法のように条件分岐そのものを整理するのも手です。
AND関数・OR関数のよくある注意点
- 「70以上80未満」は1つの式で書けない:
70<=B2<80とは書けません。AND(B2>=70,B2<80)のように条件を2つに分けます。 - 論理値が1つもないと#VALUE!エラー: 範囲を指定したときに、中身が文字列や空白だけで論理値(TRUE/FALSE)が1つもない場合は#VALUE!になります。範囲内の文字列や空白セルは無視されます。原因の探し方は#VALUE!エラーの原因と直し方を参照してください。
- 条件に合う件数や合計を出したいならCOUNTIFS・SUMIFS: AND・ORは1行ずつTRUE/FALSEを判定する関数です。「条件をすべて満たす行が何件あるか」はCOUNTIFSで複数条件を満たすセルの個数を数える方法、OR条件での集計はサイトの人気記事エクセルのsumifs関数でOR条件の集計をする方法やSUMPRODUCTでAND/OR条件の集計をする方法の方法が向いています。
AND関数・OR関数が登場する記事
AND関数・OR関数の使い方まとめ
AND関数は「すべて満たすか」、OR関数は「どれか1つでも満たすか」をTRUE/FALSEで返します。IF関数の条件部分に入れて=IF(AND(条件1,条件2),"合格","不合格")の形で使うのが基本です。範囲の条件付き集計には、エクセル関数で条件付きで中央値(MEDIAN)を計算する方法のような集計向けの方法もあわせて参考にしてください。





