=AND(B2>=50,C2>=50)は、2つの条件が両方とも真のときだけTRUEを返します。=OR(B2>=50,C2>=50)は、少なくとも1つが真ならTRUEを返します。IFの中で使うと、2つの条件を1つの判定にまとめられます:=IF(AND(B2>=50,C2>=50),"Pass","Fail")。
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Student | Exam | Project | Both 50+ | Either 50+ |
| 2 | Ana | 72 | 64 | Pass | Pass |
| 3 | Ben | 45 | 80 | Fail | Pass |
| 4 | Chloe | 58 | 51 | Pass | Pass |
| 5 | Dan | 38 | 42 | Fail | Fail |
| 6 | Eve | 91 | 47 | Fail | Pass |
BenとEveは一方に合格して他方は不合格なので、D列(AND)では不合格、E列(OR)では合格です。Danは両方不合格で、どちらの列でも不合格です。B3のBenの試験の点数を55に変えると、D列でも合格になります。
AND関数
=AND(logical1, [logical2], ...)
ANDは最大255個の条件を受け取り、そのすべてがTRUEのときだけTRUEを返します。1つでもFALSEがあれば、結果はFALSEです。単独で使うとセルにTRUEかFALSEを表示し、IFの中で使うとIFがどちらの結果を返すかを決めます。
数値が2つの値の間にあるか調べる
ExcelにはBETWEEN関数がありません。下限と上限をANDで組み合わせます:
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Sample | Temp | Between 10 and 20 | Status |
| 2 | S1 | 14 | TRUE | OK |
| 3 | S2 | 22 | FALSE | Check |
| 4 | S3 | 10 | TRUE | OK |
| 5 | S4 | 7 | FALSE | Check |
| 6 | S5 | 20 | TRUE | OK |
S3とS5はちょうど境界にありますが、条件に>=と<=を使っているので範囲内とみなされます。境界を含めないなら>と<を使います。=AND(B2>=$F$1,B2<=$F$2)のように境界をセルに置けば、数式を編集せずに範囲を変えられます。10<=B2<=20のような条件はExcelでは動きません。10<=B2(TRUEかFALSE)を20と比べることになり、ExcelはTRUEとFALSEをどの数値より大きいとみなすので、結果は常にFALSEになります。
OR関数
=OR(logical1, [logical2], ...)
ORは少なくとも1つの条件がTRUEならTRUEを返し、すべてがFALSEのときだけFALSEを返します。複数の文字列のどれかを受け入れるときによく使います:
| A | B | C | |
|---|---|---|---|
| 1 | Order | Region | Zone |
| 2 | 1001 | North | Zone 1 |
| 3 | 1002 | East | Zone 2 |
| 4 | 1003 | South | Zone 1 |
| 5 | 1004 | West | Zone 2 |
| 6 | 1005 | south | Zone 1 |
文字列の比較は大文字と小文字を区別しないので、小文字のsouthもZone 1になります。受け入れる値が多いときは、=OR(B2={"North","South","Central"})で、B2を配列定数の各項目とまとめて比べられます。
NOTとXOR
NOTは論理値を反転します。=NOT(TRUE)はFALSEです。手元の条件が欲しい条件の逆になっているときに読みやすく書けます。=IF(NOT(C2="Done"),"Follow up","")は=IF(C2<>"Done","Follow up","")と同じです。
Excel 2013から使えるXORは排他的論理和です。条件が2つなら、ちょうど1つがTRUEのときTRUEで、両方TRUEか両方FALSEならFALSEです。条件がもっと多いときは、TRUEの数が奇数ならTRUEになります。
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Task | Owner | Status | Open | One check only |
| 2 | Report | Ana | Done | FALSE | FALSE |
| 3 | Budget | Ben | Open | TRUE | FALSE |
| 4 | Slides | Ana | Open | TRUE | TRUE |
| 5 | Survey | Ben | Done | FALSE | TRUE |
| 6 | Plan | Ana | Done | FALSE | FALSE |
E列は、Slides(AnaだがDoneではない)とSurvey(DoneだがAnaではない)でTRUEになり、両方当てはまるか両方当てはまらない行ではFALSEになります。
ANDとORを組み合わせる
条件は入れ子にできます。ORの中にAND、ANDの中にORを入れられます。担当者がNorth地域で、かつ売上が1,000を超えたか新規顧客と契約したときにボーナスが出るとします:
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Rep | Region | Sales | New client | Bonus |
| 2 | Ana | North | 1200 | No | Bonus |
| 3 | Ben | North | 700 | Yes | Bonus |
| 4 | Chloe | South | 1500 | Yes | |
| 5 | Dan | North | 900 | No | |
| 6 | Eve | North | 1100 | Yes | Bonus |
Ana(売上)、Ben(新規顧客)、Eve(両方)がボーナスを受け取ります。ChloeはORの部分を満たしていますがSouthで、DanはNorthですがORの条件をどちらも満たしていません。
練習: 送料無料
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Order | Total | Member | Shipping |
| 2 | 1001 | 35 | Yes |
やってみよう: D2で、B2の注文合計が50以上か、顧客が会員(C2が「Yes」)なら「Free」、そうでなければ「Paid」と表示してください。
配列数式のANDとOR: *と+を使う
ANDとORは、受け取ったものすべてを1つのTRUEかFALSEにまとめます。1行の中ならそれで問題ありませんが、数式が列全体を一度に扱うときは困ります。=AND(B2:B6="North",C2:C6>100)は5行をまとめて1つの値しか返しません。配列数式(FILTER、SUMPRODUCT、条件付きのSUM)では、条件をかっこで囲み、ANDなら掛け合わせ、ORなら足し合わせます。TRUEは1、FALSEは0として数えられるので、積は両方が真のときだけ1になり、和はどちらかが真なら1以上になります。
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Rep | Region | Sales | Count | ||
| 2 | Ana | North | 1200 | North and over 1,000 | 2 | |
| 3 | Ben | South | 700 | North or over 1,000 | 4 | |
| 4 | Chloe | North | 900 | |||
| 5 | Dan | South | 1500 | |||
| 6 | Eve | North | 1100 |
F2は2行(AnaとEve)、F3は4行(Ben以外の全員)を数えます。F3では>0が大切です。両方の条件を満たす行は合計が2になるので、比較によって0より大きい和を1つのTRUEに変えています。同じ形で行を抽出することもできます:=FILTER(A2:C6,(B2:B6="North")*(C2:C6>1000))。ANDの条件で数えるだけなら、COUNTIFSを使えば配列なしでできます:=COUNTIFS(B2:B6,"North",C2:C6,">1000")。COUNTIFSのページをご覧ください。
よくある質問
ExcelでIFとANDを組み合わせるには?
IFの条件にANDを入れます:=IF(AND(B2>=50,C2>=50),"Pass","Fail")。B2とC2が両方50以上のときだけPassになります。
Excelで数値が2つの値の間にあるか調べるには?
ANDで2つの比較を組み合わせます:=AND(B2>=10,B2<=20)は10以上20以下の値にTRUEを返します。IFの中なら=IF(AND(B2>=10,B2<=20),"In range","Out of range")です。
ExcelのANDとORの違いは何ですか?
ANDはすべての条件がTRUEのときだけTRUEを返します。ORは少なくとも1つの条件がTRUEならTRUEを返します。=AND(TRUE,FALSE)はFALSE、=OR(TRUE,FALSE)はTRUEです。
FILTERやSUMPRODUCTの数式でANDがうまく動かないのはなぜですか?
ANDとORは、範囲全体を行ごとではなく1つのTRUEかFALSEにまとめてしまうからです。配列数式では、ANDは条件を掛け合わせて(B2:B6="North")*(C2:C6>100)とし、ORは足し合わせます。
1つの数式でANDとORを両方使えますか?
使えます。一方をもう一方の中に入れます:=IF(AND(B2="North",OR(C2>1000,D2="Yes")),"Bonus","")は、Northであることに加えて、売上が1000を超えるかD2がYesであることを求めます。