Menu

AND関数・OR関数・NOT関数とIFの組み合わせ: Excelの例

=AND(B2>=10,B2<=20)はすべての条件が真のときだけTRUEを返し、=OR(B2="North",B2="South")は少なくとも1つが真ならTRUEを返します。AND、OR、NOT、XORの単独での使い方とIFとの組み合わせ、2つの値の間かどうかの判定、配列数式でのANDとORの書き方を学びます。

このページのシートはすべて実際に動きます。数値や数式を変えると再計算されます。

=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")。

両方合格か、どちらかで合格か
D2
ABCDE
1StudentExamProjectBoth 50+Either 50+
2Ana7264PassPass
3Ben4580FailPass
4Chloe5851PassPass
5Dan3842FailFail
6Eve9147FailPass
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

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で組み合わせます:

温度は範囲内か
C2
ABCD
1SampleTempBetween 10 and 20Status
2S114TRUEOK
3S222FALSECheck
4S310TRUEOK
5S47FALSECheck
6S520TRUEOK
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

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を返します。複数の文字列のどれかを受け入れるときによく使います:

地域ごとのゾーン
C2
ABC
1OrderRegionZone
21001NorthZone 1
31002EastZone 2
41003SouthZone 1
51004WestZone 2
61005southZone 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になります。

NOTとXOR
D2
ABCDE
1TaskOwnerStatusOpenOne check only
2ReportAnaDoneFALSEFALSE
3BudgetBenOpenTRUEFALSE
4SlidesAnaOpenTRUETRUE
5SurveyBenDoneFALSETRUE
6PlanAnaDoneFALSEFALSE
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

E列は、Slides(AnaだがDoneではない)とSurvey(DoneだがAnaではない)でTRUEになり、両方当てはまるか両方当てはまらない行ではFALSEになります。

ANDとORを組み合わせる

条件は入れ子にできます。ORの中にAND、ANDの中にORを入れられます。担当者がNorth地域で、かつ売上が1,000を超えたか新規顧客と契約したときにボーナスが出るとします:

ボーナスの規則
E2
ABCDE
1RepRegionSalesNew clientBonus
2AnaNorth1200NoBonus
3BenNorth700YesBonus
4ChloeSouth1500Yes
5DanNorth900No
6EveNorth1100YesBonus
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

Ana(売上)、Ben(新規顧客)、Eve(両方)がボーナスを受け取ります。ChloeはORの部分を満たしていますがSouthで、DanはNorthですがORの条件をどちらも満たしていません。

練習: 送料無料

送料無料
D2
ABCD
1OrderTotalMemberShipping
2100135Yes
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

やってみよう: 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以上になります。

*と+で数える
F2
ABCDEF
1RepRegionSalesCount
2AnaNorth1200North and over 1,0002
3BenSouth700North or over 1,0004
4ChloeNorth900
5DanSouth1500
6EveNorth1100
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

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であることを求めます。

Coddyのプログラミング言語のイラスト

Coddyでコードを学ぼう

始める