わえなび ワード&エクセル問題集

当サイトはWordとExcelの実力を鍛える最高水準の特訓問題集です。リンクを張るのは自由です。みんなで勉強しましょう!

【Excel】AND関数やOR関数を使うなら、まず「論理値を返す関数」であることを理解せよ

複数の条件があるときに、すべての条件をクリアする必要があるのか、それとも、どれか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関数=両方の条件を満たす

(1)AND関数はTRUEまたはFALSEを返す

問題

60点以上で課題提出に○がついていればTRUEと表示しなさい。また、60点以上で課題提出に○がついていれば修了と表示しなさい。

f:id:waenavi:20201008214715j:plain

 

解説

60点以上であることを判定します(参考:【IF関数】以上と以下の練習問題、未満との違い、イコールの有無の判断基準と注意点)。

f:id:waenavi:20201008215401j:plain

 

60点以上でTRUEとなります。

f:id:waenavi:20201008215406j:plain

 

このなかで、課題を提出した人だけをTRUEにしようとしています(参考:【Excel】一致の判定はイコール「=」、等しくないことの判定は不等号2つ「<>」)。

f:id:waenavi:20201008215409j:plain

f:id:waenavi:20201008215412j:plain

 

60点以上であることと、課題提出に丸が付いていることを比較演算で判定することは可能です。

f:id:waenavi:20201008215415j:plain

 

複数の条件がすべてTRUEであることを調べるにはAND関数を使います。先頭にANDを記述して、カッコで囲みます。

f:id:waenavi:20201008215419j:plain

 

AND関数を挿入します。

f:id:waenavi:20201008215422j:plain

 

1つ目の条件のあとに、カンマを入力します。

f:id:waenavi:20201008215424j:plain

 

2つ目の条件を記述してカッコを閉じます。

f:id:waenavi:20201008215429j:plain

 

60点以上で課題提出に○がついている場合だけTRUEになります。

f:id:waenavi:20201008215432j:plain

 

AND関数はすべてがTRUEの場合にTRUE、1つでもFALSEがあればFALSEを返します。

f:id:waenavi:20201008215435j:plain

 

AND関数のように、TRUEまたはFALSEを返す関数はそのままIF関数の論理式として利用することができます(参考:IF関数の条件に「等号や不等号が必要」と思っているなら、IF関数を勉強し直してほしい)。

f:id:waenavi:20201008215438j:plain

 

IF関数を挿入します。

f:id:waenavi:20201008215443j:plain

 

AND関数がTRUEであれば修了、FALSEであれば空白を返します(参考:【Excel】空白セルの判定をして、IF関数で「空白文字列」を返す方法と注意点)。

f:id:waenavi:20201008215446j:plain

 

これで完成です。

f:id:waenavi:20201008214742j:plain

 

(2)AND関数の入力練習

問題

さきほどの設問(1)の数式を先頭から入力しなさい。また、何度も繰り返し練習しなさい。

f:id:waenavi:20201008214742j:plain

 

解説

初めから2つの条件を両方満たさなければならないことが分かっている場合は、IF関数を挿入した直後に、AND関数を挿入します。

f:id:waenavi:20201008215711j:plain

 

この時カッコとカンマが多くなるので、カッコとカンマの意味を考えながら入力します。

f:id:waenavi:20201008215715j:plain

 

IF関数を挿入します。この時のカッコはIF関数の始まりを表すカッコです。

f:id:waenavi:20201008215718j:plain

 

これに続けてAND関数を挿入します。この時のカッコはAND関数の始まりを表すカッコです。

f:id:waenavi:20201008215722j:plain

 

1つ目の条件である60点以上を記述します。カンマを入力します。

f:id:waenavi:20201008215725j:plain

 

この時のカンマは条件2つを区切るためのカンマです。

f:id:waenavi:20201008215728j:plain

 

課題提出に丸が付いていることを記述します。カッコを閉じます。さらにカンマを入力します。

f:id:waenavi:20201008215731j:plain

 

カッコを閉じるときは、どの関数の終わりのカッコであるかを考えます。この時のカッコはAND関数の終わりを表すカッコです。

f:id:waenavi:20201008215736j:plain

 

カンマを入力したのは外側のIF関数の論理式が終わったからです。

f:id:waenavi:20201008215738j:plain

 

TRUEであれば修了、FALSEであれば空白を返します。これで完成です。素早く入力できるように何回も繰り返し練習しましょう。

f:id:waenavi:20201008215741j:plain

 

2.値がX以上Y未満

問題

160以上180未満であればA、そうでなければBと表示しなさい。

f:id:waenavi:20201008214815j:plain

 

解説

160以上180未満という条件は、160以上と180未満の2つの条件に分けて、両方満たすものと考えます。したがって、AND関数を使います。

f:id:waenavi:20201008215901j:plain

 

IF関数を挿入します。さらにAND関数を挿入します。

f:id:waenavi:20201008215905j:plain

 

160以上であることと180未満であることをそれぞれ判定します。

f:id:waenavi:20201008215909j:plain

 

カンマを入力します。

f:id:waenavi:20201008215912j:plain

 

両方満たす場合はA、そうでなければBとします。

f:id:waenavi:20201008215916j:plain

 

これで完成です。

f:id:waenavi:20201008215919j:plain

 

3.3つ以上のAND条件

問題

英語140点以上、数学140点以上、理科70点以上をすべて満たしていれば合格と表示しなさい。

f:id:waenavi:20201008220514j:plain

 

解説

3つ以上の条件を書く場合もカンマで区切ります。

f:id:waenavi:20201009094506j:plain

 

IF関数を挿入します。さらにAND関数を挿入します。

f:id:waenavi:20201009094510j:plain

 

英語140点以上、数学140点以上、理科70点以上の比較演算をそれぞれ記述します。

f:id:waenavi:20201009094514j:plain

 

すべて満たす場合は合格、そうでなければ空白を返します。

f:id:waenavi:20201009094517j:plain

 

これで完成です。

f:id:waenavi:20201009094520j:plain

 

4.OR関数=いずれかの条件を満たす

(1)OR関数はTRUEまたはFALSEを返す

問題

60点以上または課題提出に○がついていればTRUEと表示しなさい。また、60点以上または課題提出に○がついていれば修了と表示しなさい。

f:id:waenavi:20201009095432j:plain

 

解説

60点以上または課題提出を、それぞれ比較演算で判定することは可能です。

f:id:waenavi:20201009111955j:plain

 

複数の条件のうち1つでもTRUEであることを調べるにはOR関数を使います。先頭にORを記述して、カッコで囲みます。

f:id:waenavi:20201009111959j:plain

 

先頭にイコールを入力します。OR関数を挿入します。1つ目の条件を記述してカンマを入力します。

f:id:waenavi:20201009112002j:plain

 

2つ目の条件を記述してカッコを閉じます。

f:id:waenavi:20201009112005j:plain

 

60点未満でも、課題を提出していればTRUEになります。

f:id:waenavi:20201009112009j:plain

 

また、60点以上であれば課題未提出でもTRUEになります。

f:id:waenavi:20201009112012j:plain

 

OR関数は1つでもTRUEの場合にTRUE、すべてがFALSEの場合にFALSEを返します。

f:id:waenavi:20201009112016j:plain

 

OR関数のように、TRUEまたはFALSEを返す関数はそのままIF関数の論理式として利用することができます(参考:IF関数の条件に「等号や不等号が必要」と思っているなら、IF関数を勉強し直してほしい)。

f:id:waenavi:20201009112020j:plain

 

IF関数を挿入します。

f:id:waenavi:20201009112023j:plain

 

OR関数がTRUEであれば修了、FALSEであれば空白を返します。

f:id:waenavi:20201009112026j:plain

 

これで完成です。

f:id:waenavi:20201009112029j:plain

 

(2)OR関数の入力練習

問題

さきほどの設問(1)の数式を先頭から入力しなさい。また、何度も繰り返し練習しなさい。

f:id:waenavi:20201009101237j:plain

 

解説

初めから、どちらかの条件を満たせばよいことが分かっている場合は、IF関数を挿入した直後に、OR関数を挿入します。

f:id:waenavi:20201009114500j:plain

 

この時カッコとカンマが多くなるので、カッコとカンマの意味を考えながら入力します。

f:id:waenavi:20201009114503j:plain

 

IF関数を挿入します。

f:id:waenavi:20201009114507j:plain

 

この時のカッコはIF関数の始まりを表すカッコです。これに続けてOR関数を挿入します。この時のカッコはOR関数の始まりを表すカッコです。

f:id:waenavi:20201009114510j:plain

 

1つ目の条件である60点以上を記述します。カンマを入力します。

f:id:waenavi:20201009114513j:plain

 

この時のカンマは条件2つを区切るためのカンマです。

f:id:waenavi:20201009114517j:plain

 

課題提出に丸が付いていることを記述します。カッコを閉じます。さらにカンマを入力します。

f:id:waenavi:20201009114520j:plain

 

カッコを閉じるときは、どの関数の終わりのカッコであるかを考えます。この時のカッコはOR関数の終わりを表すカッコです。

f:id:waenavi:20201009114523j:plain

 

カンマを入力したのは外側のIF関数の論理式が終わったからです。

f:id:waenavi:20201009114526j:plain

 

TRUEであれば修了、FALSEであれば空白を返します。

f:id:waenavi:20201009114529j:plain

 

これで完成です。素早く入力できるように何回も繰り返し練習しましょう。

f:id:waenavi:20201009114533j:plain

 

4.「と」がANDとは限らない

問題

A列の数値のうち30以下と70以上については「A」と表示し、それ以外は「B」と表示しなさい。

f:id:waenavi:20201009102416j:plain

 

解説

30以下と70以上の両方を満たすことは絶対にありません。

f:id:waenavi:20201009114817j:plain

 

2つの条件を両方満たす必要があるかどうかで判断します。A列の数値が30以下であることと、70以上であることをそれぞれ判定して、どちらか一方を満たせばTRUEとします。したがって、OR関数を使います。

f:id:waenavi:20201009114820j:plain

 

IF関数を挿入します。さらにOR関数を挿入します。30以下であることと70以上であることをそれぞれ判定します。

f:id:waenavi:20201009114823j:plain

 

どちらか一方を満たす場合はA、そうでなければBとします。

f:id:waenavi:20201009114826j:plain

 

これで完成です。

f:id:waenavi:20201009114829j:plain

 

5.3つ以上のOR条件

問題

英語160点以上、数学160点以上、理科80点以上のいずれか1つを満たしていれば合格と表示しなさい。

f:id:waenavi:20201009114902j:plain

 

解説

3つ以上の条件を書く場合もカンマで区切ります。

f:id:waenavi:20201009115953j:plain

 

IF関数を挿入します。さらにOR関数を挿入します。英語160点以上、数学160点以上、理科80点以上の比較演算をそれぞれ記述します。

f:id:waenavi:20201009115956j:plain

 

1つでも満たす場合は合格、そうでなければ空白を返します。

f:id:waenavi:20201012111046j:plain

 

これで完成です。

f:id:waenavi:20201012111050j:plain

 

6.比較演算のある条件と比較演算の無い条件

問題

A列の数値のうち、10以上の偶数に〇をつけなさい。

f:id:waenavi:20201009122156j:plain

 

解説

10以上の偶数とは、10以上であることと、偶数であることの2つの条件を満たすということです。

f:id:waenavi:20201009122754j:plain

 

10以上は比較演算を使いますが、偶数はISEVEN関数を使えばよいので比較演算は不要です(参考:IF関数の条件に「等号や不等号が必要」と思っているなら、IF関数を勉強し直してほしい)。

f:id:waenavi:20201009122756j:plain

 

IF関数を挿入します。さらにAND関数を挿入します。10以上の判定をします。さらに、偶数の判定をします。

f:id:waenavi:20201009122800j:plain

 

両方満たす場合は○、そうでなければ空白を返します。

f:id:waenavi:20201009122804j:plain

 

これで完成です。

f:id:waenavi:20201009122808j:plain

 

7.ANDをORにしたときのTRUEの個数

問題

さきほどの問題で、ANDをORにするとどうなるか。

f:id:waenavi:20201009122418j:plain

 

解説

ANDを、ORにすると○の数が増えます。

f:id:waenavi:20201009122947j:plain

 

10以上であればすべて○が付きます。

f:id:waenavi:20201009122950j:plain

 

また、偶数はすべて○になります。

f:id:waenavi:20201009122954j:plain

 

いっぱんに、ANDは2つの条件を両方クリアしないといけないので、TRUEになる数が減ります。

f:id:waenavi:20201009122957j:plain

 

一方、ORは2つの条件のうち一方をクリアしなくてもTRUEになるので、TRUEの数が増えます。

f:id:waenavi:20201009123000j:plain

 

8.COUNTと組み合わせる練習

(1)空白セルが一つもない

問題

A列が70以上で、B列~D列に空白が1つもなければ「合格」と表示しなさい。

f:id:waenavi:20201009122445j:plain

 

解説

A列が70以上であることと、B列~D列に空欄が1つもない場合、つまりすべて○が付いていることを分けて考えます。

f:id:waenavi:20201009123203j:plain

 

空欄が無いということは文字が入っているセルをカウントして3になればいいということです。

f:id:waenavi:20201009123206j:plain

 

IF関数を挿入します。さらにAND関数を挿入します。70以上の判定をします。さらに、COUNTA関数を入れ、3であればすべて○が付いているといえます。

f:id:waenavi:20201009123209j:plain

 

両方満たす場合は合格、そうでなければ空白を返します。

f:id:waenavi:20201009123212j:plain

 

これで完成です。

f:id:waenavi:20201009123216j:plain

 

(2)空白セルが1つ以上ある

問題

A列が60未満か、B列~D列に空白が1つでもあれば「NG」と表示しなさい。

f:id:waenavi:20201009122515j:plain

 

解説

A列が60未満であることと、B列~D列に空白が1つでもあることを分けて考えます。

f:id:waenavi:20201009125133j:plain

 

COUNTBLANK関数は空白セルを数える関数です。論理式として使用する場合、空白が1個以上であればTRUE、空白が無ければFALSEとなります。

f:id:waenavi:20201009125136j:plain

 

IF関数を挿入します。さらにOR関数を挿入します。60未満の判定をします。さらに、COUNTBLANK関数を入れます。

f:id:waenavi:20201009125140j:plain

 

どちらか一方を満たす場合はNG、そうでなければ空白を返します。

f:id:waenavi:20201009125144j:plain

 

これで完成です。

f:id:waenavi:20201009125147j:plain

 

9.ド・モルガンの法則

問題

「英語と数学が両方70点以上であれば○、それ以外は×」と「英語または数学が70点未満であれば×、それ以外は○」は同じと言えるか。

f:id:waenavi:20201009125200j:plain

 

解説

IF関数を挿入します。さらに、AND関数を挿入します。

f:id:waenavi:20201009130148j:plain

 

英語70点以上、かつ、数学70点以上を判定し、TRUEの場合は○、FALSEの場合は×とします。

f:id:waenavi:20201009130151j:plain

f:id:waenavi:20201009130154j:plain

f:id:waenavi:20201009130158j:plain

 

IF関数を挿入します。さらに、OR関数を挿入します。

f:id:waenavi:20201009130203j:plain

 

英語70点未満、または、数学70点未満を判定し、TRUEの場合は×、FALSEの場合は○とします。

f:id:waenavi:20201009130207j:plain

f:id:waenavi:20201009130210j:plain

 

同じ結果になります。

f:id:waenavi:20201009130212j:plain

 

英語と数学が両方70点以上の人を〇とすると、そうでない人は、英語と数学のどちらか一方は必ず70点未満のはずです。つまり、英語又は数学が70点未満です。

f:id:waenavi:20201009130215j:plain

f:id:waenavi:20201009130218j:plain

 

条件を両方満たす人の反対は、どちらか一方の条件を満たさない人です。

f:id:waenavi:20201009130222j:plain

 

AとBの両方の条件を満たす人の反対は、AではないかまたはBではない人です

f:id:waenavi:20201009130225j:plain

 

ANDをORに変えて、中の条件を両方逆にすると、TRUEとFALSEが逆になります。

f:id:waenavi:20201009130228j:plain

 

このように、2つの条件があって、ANDとORを入れ替えて、中の条件も両方とも逆にすると、判定結果は真逆になります。これを「ド・モルガンの法則」といいます。

 

f:id:waenavi:20201009130231j:plain

 


解説は以上です。


10.動画版はこちら(無料)

この記事は、わえなび実力養成講座「ファンダメンタルExcel13」Program 13-21、13-22、13-23 のYoutube動画を書き起こして、加筆修正したものです。

 


Copyright(C)2018-2020 waenavi, All rights reserved. [www.waenavi.com 定礎 平成三十年八月]
Youtube | 公式サイト | twitter | 著作権 | 運営者情報 | お問い合わせ