複数の条件があるときに、すべての条件をクリアする必要があるのか、それとも、どれか1つ以上の条件をクリアすれば良いのかでは全く違います。前者をAND条件、後者をOR条件といいます。
ところで、Excelでは、AND関数とOR関数をIF関数の第1引数(論理式)として記述することがあります。なぜ、複数の条件をカンマで区切って、ANDやORの中に入れるだけで良いのでしょうか?
- =IF(AND(条件1,条件2),真の場合,偽の場合)
- =IF(OR(条件1,条件2),真の場合,偽の場合)
それは、AND関数、OR関数がいずれも論理値(TRUE・FALSE)を返す関数だからです。IF関数の論理式は、必ずしも等号や不等号を用いた比較演算式である必要はなく、論理値を返す式であればよいのです。
そこで、今回は、まず、AND関数やOR関数を単独で使うことによって「論理値を返す関数」であることを確認したうえで、AND関数やOR関数を用いて複数条件の論理式を記述する問題を出題します。
目次
- 1.AND関数=両方の条件を満たす
- 2.値がX以上Y未満
- 3.3つ以上のAND条件
- 4.OR関数=いずれかの条件を満たす
- 4.「と」がANDとは限らない
- 5.3つ以上のOR条件
- 6.比較演算のある条件と比較演算の無い条件
- 7.ANDをORにしたときのTRUEの個数
- 8.COUNTと組み合わせる練習
- 9.ド・モルガンの法則
- 10.動画版はこちら(無料)
1.AND関数=両方の条件を満たす
(1)AND関数はTRUEまたはFALSEを返す
問題
60点以上で課題提出に○がついていればTRUEと表示しなさい。また、60点以上で課題提出に○がついていれば修了と表示しなさい。
解説
60点以上であることを判定します(参考:【IF関数】以上と以下の練習問題、未満との違い、イコールの有無の判断基準と注意点)。
60点以上でTRUEとなります。
このなかで、課題を提出した人だけをTRUEにしようとしています(参考:【Excel】一致の判定はイコール「=」、等しくないことの判定は不等号2つ「<>」)。
60点以上であることと、課題提出に丸が付いていることを比較演算で判定することは可能です。
複数の条件がすべてTRUEであることを調べるにはAND関数を使います。先頭にANDを記述して、カッコで囲みます。
AND関数を挿入します。
1つ目の条件のあとに、カンマを入力します。
2つ目の条件を記述してカッコを閉じます。
60点以上で課題提出に○がついている場合だけTRUEになります。
AND関数はすべてがTRUEの場合にTRUE、1つでもFALSEがあればFALSEを返します。
AND関数のように、TRUEまたはFALSEを返す関数はそのままIF関数の論理式として利用することができます(参考:IF関数の条件に「等号や不等号が必要」と思っているなら、IF関数を勉強し直してほしい)。
IF関数を挿入します。
AND関数がTRUEであれば修了、FALSEであれば空白を返します(参考:【Excel】空白セルの判定をして、IF関数で「空白文字列」を返す方法と注意点)。
これで完成です。
(2)AND関数の入力練習
問題
さきほどの設問(1)の数式を先頭から入力しなさい。また、何度も繰り返し練習しなさい。
解説
初めから2つの条件を両方満たさなければならないことが分かっている場合は、IF関数を挿入した直後に、AND関数を挿入します。
この時カッコとカンマが多くなるので、カッコとカンマの意味を考えながら入力します。
IF関数を挿入します。この時のカッコはIF関数の始まりを表すカッコです。
これに続けてAND関数を挿入します。この時のカッコはAND関数の始まりを表すカッコです。
1つ目の条件である60点以上を記述します。カンマを入力します。
この時のカンマは条件2つを区切るためのカンマです。
課題提出に丸が付いていることを記述します。カッコを閉じます。さらにカンマを入力します。
カッコを閉じるときは、どの関数の終わりのカッコであるかを考えます。この時のカッコはAND関数の終わりを表すカッコです。
カンマを入力したのは外側のIF関数の論理式が終わったからです。
TRUEであれば修了、FALSEであれば空白を返します。これで完成です。素早く入力できるように何回も繰り返し練習しましょう。
2.値がX以上Y未満
問題
160以上180未満であればA、そうでなければBと表示しなさい。
解説
160以上180未満という条件は、160以上と180未満の2つの条件に分けて、両方満たすものと考えます。したがって、AND関数を使います。
IF関数を挿入します。さらにAND関数を挿入します。
160以上であることと180未満であることをそれぞれ判定します。
カンマを入力します。
両方満たす場合はA、そうでなければBとします。
これで完成です。
3.3つ以上のAND条件
問題
英語140点以上、数学140点以上、理科70点以上をすべて満たしていれば合格と表示しなさい。
解説
3つ以上の条件を書く場合もカンマで区切ります。
IF関数を挿入します。さらにAND関数を挿入します。
英語140点以上、数学140点以上、理科70点以上の比較演算をそれぞれ記述します。
すべて満たす場合は合格、そうでなければ空白を返します。
これで完成です。
4.OR関数=いずれかの条件を満たす
(1)OR関数はTRUEまたはFALSEを返す
問題
60点以上または課題提出に○がついていればTRUEと表示しなさい。また、60点以上または課題提出に○がついていれば修了と表示しなさい。
解説
60点以上または課題提出を、それぞれ比較演算で判定することは可能です。
複数の条件のうち1つでもTRUEであることを調べるにはOR関数を使います。先頭にORを記述して、カッコで囲みます。
先頭にイコールを入力します。OR関数を挿入します。1つ目の条件を記述してカンマを入力します。
2つ目の条件を記述してカッコを閉じます。
60点未満でも、課題を提出していればTRUEになります。
また、60点以上であれば課題未提出でもTRUEになります。
OR関数は1つでもTRUEの場合にTRUE、すべてがFALSEの場合にFALSEを返します。
OR関数のように、TRUEまたはFALSEを返す関数はそのままIF関数の論理式として利用することができます(参考:IF関数の条件に「等号や不等号が必要」と思っているなら、IF関数を勉強し直してほしい)。
IF関数を挿入します。
OR関数がTRUEであれば修了、FALSEであれば空白を返します。
これで完成です。
(2)OR関数の入力練習
問題
さきほどの設問(1)の数式を先頭から入力しなさい。また、何度も繰り返し練習しなさい。
解説
初めから、どちらかの条件を満たせばよいことが分かっている場合は、IF関数を挿入した直後に、OR関数を挿入します。
この時カッコとカンマが多くなるので、カッコとカンマの意味を考えながら入力します。
IF関数を挿入します。
この時のカッコはIF関数の始まりを表すカッコです。これに続けてOR関数を挿入します。この時のカッコはOR関数の始まりを表すカッコです。
1つ目の条件である60点以上を記述します。カンマを入力します。
この時のカンマは条件2つを区切るためのカンマです。
課題提出に丸が付いていることを記述します。カッコを閉じます。さらにカンマを入力します。
カッコを閉じるときは、どの関数の終わりのカッコであるかを考えます。この時のカッコはOR関数の終わりを表すカッコです。
カンマを入力したのは外側のIF関数の論理式が終わったからです。
TRUEであれば修了、FALSEであれば空白を返します。
これで完成です。素早く入力できるように何回も繰り返し練習しましょう。
4.「と」がANDとは限らない
問題
A列の数値のうち30以下と70以上については「A」と表示し、それ以外は「B」と表示しなさい。
解説
30以下と70以上の両方を満たすことは絶対にありません。
2つの条件を両方満たす必要があるかどうかで判断します。A列の数値が30以下であることと、70以上であることをそれぞれ判定して、どちらか一方を満たせばTRUEとします。したがって、OR関数を使います。
IF関数を挿入します。さらにOR関数を挿入します。30以下であることと70以上であることをそれぞれ判定します。
どちらか一方を満たす場合はA、そうでなければBとします。
これで完成です。
5.3つ以上のOR条件
問題
英語160点以上、数学160点以上、理科80点以上のいずれか1つを満たしていれば合格と表示しなさい。
解説
3つ以上の条件を書く場合もカンマで区切ります。
IF関数を挿入します。さらにOR関数を挿入します。英語160点以上、数学160点以上、理科80点以上の比較演算をそれぞれ記述します。
1つでも満たす場合は合格、そうでなければ空白を返します。
これで完成です。
6.比較演算のある条件と比較演算の無い条件
問題
A列の数値のうち、10以上の偶数に〇をつけなさい。
解説
10以上の偶数とは、10以上であることと、偶数であることの2つの条件を満たすということです。
10以上は比較演算を使いますが、偶数はISEVEN関数を使えばよいので比較演算は不要です(参考:IF関数の条件に「等号や不等号が必要」と思っているなら、IF関数を勉強し直してほしい)。
IF関数を挿入します。さらにAND関数を挿入します。10以上の判定をします。さらに、偶数の判定をします。
両方満たす場合は○、そうでなければ空白を返します。
これで完成です。
7.ANDをORにしたときのTRUEの個数
問題
さきほどの問題で、ANDをORにするとどうなるか。
解説
ANDを、ORにすると○の数が増えます。
10以上であればすべて○が付きます。
また、偶数はすべて○になります。
いっぱんに、ANDは2つの条件を両方クリアしないといけないので、TRUEになる数が減ります。
一方、ORは2つの条件のうち一方をクリアしなくてもTRUEになるので、TRUEの数が増えます。
8.COUNTと組み合わせる練習
(1)空白セルが一つもない
問題
A列が70以上で、B列~D列に空白が1つもなければ「合格」と表示しなさい。
解説
A列が70以上であることと、B列~D列に空欄が1つもない場合、つまりすべて○が付いていることを分けて考えます。
空欄が無いということは文字が入っているセルをカウントして3になればいいということです。
IF関数を挿入します。さらにAND関数を挿入します。70以上の判定をします。さらに、COUNTA関数を入れ、3であればすべて○が付いているといえます。
両方満たす場合は合格、そうでなければ空白を返します。
これで完成です。
(2)空白セルが1つ以上ある
問題
A列が60未満か、B列~D列に空白が1つでもあれば「NG」と表示しなさい。
解説
A列が60未満であることと、B列~D列に空白が1つでもあることを分けて考えます。
COUNTBLANK関数は空白セルを数える関数です。論理式として使用する場合、空白が1個以上であればTRUE、空白が無ければFALSEとなります。
IF関数を挿入します。さらにOR関数を挿入します。60未満の判定をします。さらに、COUNTBLANK関数を入れます。
どちらか一方を満たす場合はNG、そうでなければ空白を返します。
これで完成です。
9.ド・モルガンの法則
問題
「英語と数学が両方70点以上であれば○、それ以外は×」と「英語または数学が70点未満であれば×、それ以外は○」は同じと言えるか。
解説
IF関数を挿入します。さらに、AND関数を挿入します。
英語70点以上、かつ、数学70点以上を判定し、TRUEの場合は○、FALSEの場合は×とします。
IF関数を挿入します。さらに、OR関数を挿入します。
英語70点未満、または、数学70点未満を判定し、TRUEの場合は×、FALSEの場合は○とします。
同じ結果になります。
英語と数学が両方70点以上の人を〇とすると、そうでない人は、英語と数学のどちらか一方は必ず70点未満のはずです。つまり、英語又は数学が70点未満です。
条件を両方満たす人の反対は、どちらか一方の条件を満たさない人です。
AとBの両方の条件を満たす人の反対は、AではないかまたはBではない人です
ANDをORに変えて、中の条件を両方逆にすると、TRUEとFALSEが逆になります。
このように、2つの条件があって、ANDとORを入れ替えて、中の条件も両方とも逆にすると、判定結果は真逆になります。これを「ド・モルガンの法則」といいます。
解説は以上です。
10.動画版はこちら(無料)
この記事は、わえなび実力養成講座「ファンダメンタルExcel13」Program 13-21、13-22、13-23 のYoutube動画を書き起こして、加筆修正したものです。
- ファンダメンタルExcel 13-21 複数条件1(AND関数)【わえなび】(ファンダメンタルExcel Program13 IF関数の基本)
- ファンダメンタルExcel 13-22 複数条件2(OR関数)【わえなび】(ファンダメンタルExcel Program13 IF関数の基本)
- ファンダメンタルExcel 13-23 複数条件3(ANDとORの練習)【わえなび】(ファンダメンタルExcel Program13 IF関数の基本)