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

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

IF関数の条件に「等号や不等号が必要」と思っているなら、IF関数を勉強し直してほしい


Excelで、IF関数の条件(正確には論理式)を記述するときに、比較演算子であるイコールまたは不等号が必須であると勘違いをしている人が多いようです。IF関数の論理式とは、その言葉のとおり論理値を返す式であって「比較かどうかは無関係」です。

大小関係である必要もないし、一致・不一致である必要もありません。

論理値(TRUE・FALSE)またはそれに準じる値を返す計算式であれば、比較でなくても論理式として記述することは可能です。それを知らずに「分かりにくい」だの「読みにくい」だの意味不明なことを言っている暇があったら、しっかりとIF関数の練習をやり直したほうが良いです。

そこで、今回は、比較演算の無い論理式の練習問題を大量に出題しますので、ぜひ正しい知識を身につけていただきたいと思います。

目次

1.論理値とIF関数

(1)論理値とは何か

問題

セルA1に「true」、セルA2に「false」と入力しなさい。

f:id:waenavi:20201007094424j:plain

 

解説

セルA1に小文字で「true」と入力します。

f:id:waenavi:20201007121500j:plain

 

大文字の「TRUE」になって、自動的に中央揃えになります。

f:id:waenavi:20201007121503j:plain

 

セルA2に小文字で「false」と入力します。

f:id:waenavi:20201007121507j:plain

 

大文字の「FALSE」になって、自動的に中央揃えになります。

f:id:waenavi:20201007121511j:plain

 

Excelで文字列を入力すると自動的に左揃えになります。また、数値を入力すると自動的に右揃えになります。このようにExcelは入力されたデータの種類を認識して、その種類に応じて書式を設定します。

f:id:waenavi:20201007121515j:plain

 

TRUEとFALSEは自動的に中央揃えになりますから、文字列でも数値でもないデータの種類であると認識していることになります。

f:id:waenavi:20201007121519j:plain

 

これを論理値logical value)または真理値といいます。Excelには文字列と数値のほかに論理値というデータの種類があります。

f:id:waenavi:20201007121523j:plain

 

(2)論理式に論理値を指定するとどうなるか

問題

IF関数で論理式のところにTRUEまたはFALSEと入力するとどうなるか。

f:id:waenavi:20201007095559j:plain

 

解説

IF関数を挿入します。論理式の部分に「TRUE」とだけ入力したとします。

f:id:waenavi:20201007121833j:plain

 

第2引数に○、第3引数に×と入力したとします。○になります。

f:id:waenavi:20201007121836j:plain

 

IF関数は、論理式の部分を判定した結果、TRUEであれば第2引数、FALSEであれば第3引数の値または計算を返します。つまり、TRUEを第2引数に、FALSEを第3引数に変換します(参考:IF関数は、判定しているのではなく「変換しているだけ」であることを理解せよ)。

f:id:waenavi:20201007121839j:plain

 

したがって、IF関数の論理式の部分にTRUEと入力すると、第2引数で指定した値が常に表示され、第3引数は無視されます。

f:id:waenavi:20201007121843j:plain

 

今度は論理式の部分を「FALSE」にします。

f:id:waenavi:20201007121847j:plain

 

常に×になります。

f:id:waenavi:20201007121849j:plain

 

IF関数の論理式の部分にFALSEと入力すると、第3引数で指定した値が常に表示され、第2引数は無視されます。

f:id:waenavi:20201007121852j:plain

 

(3)論理値を入力したセルを参照する

問題

A列にTRUEとFALSEを適当に入力した。TRUEであれば「○」、FALSEであれば「×」と表示しなさい。

f:id:waenavi:20201007121130j:plain

 

解説

IF関数を挿入します。セルA1を参照します。第2引数に○、第3引数に×と入力します。

f:id:waenavi:20201007122031j:plain

 

これでTRUEが○に、FALSEが×になります。

f:id:waenavi:20201007122034j:plain

 

IF関数はTRUEやFALSEを別の文字列や記号に変換する関数であって、論理式の部分で必ず比較演算をしなければならないという決まりはありません

f:id:waenavi:20201007122040j:plain

 

すでに、TRUEまたはFALSEと表示されているセルがあれば、そのセルを参照するだけで、IF関数の論理式となります。

f:id:waenavi:20201007122043j:plain

 

<補足> 「=IF(A1=TRUE,"○","×")」とするのは絶対にやめましょう。論理値であるA列の値によって、第2引数を返すのか、第3引数を返すのかが決定され、ダイレクトに変換できます。TRUEと比較するのは全く無意味であり、可読性も損なわれます(平たく言えば馬鹿っぽいのでやめましょうという意味です)。

 

2.判定だけを分離する

問題

セルB1に入力した金額の5%引きの値段と送料880円を足した合計金額を求めなさい。ただし、セルC1に「放送終了後30分以内」と入力した場合は、割引率を60%にして、送料を無料にしなさい。

f:id:waenavi:20201007122212j:plain

 

解説

セルC1が「放送終了後30分以内」であることを判定します。

f:id:waenavi:20201007130449j:plain

 

TRUEであれば60%割引、つまり40%とし、送料を0円とします。FALSEの場合は5%引き、つまり95%とし、送料を880円とします。

f:id:waenavi:20201007130452j:plain

 

セルC1が「放送終了後30分以内」であれば40%とし、そうでなければ95%とします。このパーセンテージに元の金額を掛けます(参考:【Excel】IF関数の共通部分を外に出す、ある条件のときだけ計算を追加する)。

f:id:waenavi:20201007130456j:plain

f:id:waenavi:20201007130459j:plain

 

セルC1が「放送終了後30分以内」であれば0円とし、そうでなければ880円とします。

f:id:waenavi:20201007130504j:plain

 

合計を求めます。

f:id:waenavi:20201007130506j:plain

 

これで完成です。

f:id:waenavi:20201007130509j:plain

 

別解

ところで、割引価格も送料もセルC1が「放送終了後30分以内」であることを判定しています。

f:id:waenavi:20201007130809j:plain

 

この判定だけを別のセルで行う事を考えます。

f:id:waenavi:20201007130812j:plain

 

セルC1が「放送終了後30分以内」であることを判定します。

f:id:waenavi:20201007130815j:plain

 

TRUEとなります。

f:id:waenavi:20201007130820j:plain

 

セルD1は必ずTRUEかFALSEになります。

f:id:waenavi:20201007130822j:plain

 

IF関数の論理式はセルD1を参照するだけです。

f:id:waenavi:20201007130826j:plain

 

セルD1がTRUEであれば40%とし、そうでなければ95%とします。このように、判定を別のセルで行った場合、その時点で比較演算が終わっているので、論理式はセル参照をするだけでよいのです。

f:id:waenavi:20201007130829j:plain

 

このパーセンテージに元の金額を掛けます。

f:id:waenavi:20201007130831j:plain

 

セルD1がTRUEであれば0円とし、そうでなければ880円とします。

f:id:waenavi:20201007130834j:plain

 

これで完成です。

f:id:waenavi:20201007130837j:plain

 

3.数値の1と0

(1)論理値は四則演算があると数値とみなされる

問題

TRUEとFALSEを入力した。これらに1を掛けるといくつになるか。

f:id:waenavi:20201007134737j:plain

 

解説

TRUEとFALSEは特殊な種類のデータであり、文字列や数値とは異なる論理値です。

f:id:waenavi:20201007135230j:plain

 

しかし、この論理値は前後に足し算や掛け算などの四則演算があると数値とみなされるという性質があります。

f:id:waenavi:20201007135233j:plain

 

TRUEは1、FALSEは0とみなされます。

f:id:waenavi:20201007135236j:plain

 

このため、TRUEに1を掛けると1×1で1、FALSEに1を掛けると0×1で0となります。

f:id:waenavi:20201007135239j:plain

f:id:waenavi:20201007135243j:plain

f:id:waenavi:20201012113225j:plain

 

クイズで正解すると1ポイント、不正解なら0ポイントとなりますが、それと同じように、コンピュータでは正しいこと、TRUEのことを数値の1で表します。また、否定的なこと、存在しないこと、FALSEのことを数値の0で表します。

f:id:waenavi:20201007135249j:plain

 

(2)数値の1と0は論理値とみなされる

問題

A列に1または0をランダムに入力した。1であれば○、0であれば×を表示しなさい。

f:id:waenavi:20201007134758j:plain

 

解説

IF関数では論理式のところにTRUEまたはFALSEを直接指定しても良いです。Excelでは、TRUEとFALSEの代わりに1と0を使っても良いです。数値の1はTRUEとみなされ、数値の0はFALSEとみなされます。

f:id:waenavi:20201007135507j:plain

 

IF関数を挿入します。論理式としてA1を参照するだけでよいです。

f:id:waenavi:20201007135456j:plain

 

1はTRUEとみなされるので○、0はFALSEとみなされるので×とします。これで完成です。

f:id:waenavi:20201007135500j:plain

 

はじめから1と0しかないことが分かっている場合、論理式はセルを参照するだけで良いです。1の場合を第2引数、0の場合は第3引数の値が表示されます。

f:id:waenavi:20201007135503j:plain

 

(3)削除フラグ

問題

B列に1と入力していれば空白とし、それ以外はA列の数値を2倍して表示しなさい。

f:id:waenavi:20201007134909j:plain

 

解説

何も入力していない空白セルは、論理式では数値の0、つまりFALSEとみなされます(参考:【Excel】空白セルの判定をして、IF関数で「空白文字列」を返す方法と注意点)。

f:id:waenavi:20201007135818j:plain

 

したがって、わざわざ1と0を両方入力しなくても、1を入力すればTRUE、何も入力しなければFALSEとみなされます。

f:id:waenavi:20201007135821j:plain

 

IF関数を挿入します。

f:id:waenavi:20201007135824j:plain

 

B列を参照します。これが1であれば除外なので空白、それ以外はA列の数値を2倍します。

f:id:waenavi:20201007135827j:plain

 

これで完成です。

f:id:waenavi:20201007135831j:plain

 

このように除外するための列を設けて、1と入力することによって除外することを表すことを除外フラグまたは削除フラグということがあります。

f:id:waenavi:20201007135834j:plain

 

4.論理積

問題

英語と数学がそれぞれ70点以上であればTRUEと表示しなさい。また、これを利用して、英語と数学が両方とも70点以上であれば合格、そうでなければ不合格と表示しなさい。

f:id:waenavi:20201007141552j:plain

 

解説

比較演算を用いてそれぞれ70点以上であることを判定します。

f:id:waenavi:20201007141943j:plain

 

オートフィルをします。70点以上であればTRUE、そうでなければFALSEとなります。

f:id:waenavi:20201007141947j:plain

 

この2つを掛けます。

f:id:waenavi:20201007141952j:plain

 

0と1になります。

f:id:waenavi:20201007141955j:plain

 

TRUEやFALSEは前後に四則演算があると数値とみなされるという性質があり、TRUEは1、FALSEは0とみなされます。両方ともTRUEの場合、掛け算をすると1×1で1となります。

f:id:waenavi:20201007141958j:plain

 

どちらか一方がFALSE、つまり0の場合は掛け算をすると必ず0となります。

f:id:waenavi:20201007142000j:plain

 

つまり2つの条件を両方とも満たす場合は1、どちらか一方でも条件をクリアしない場合は0となります。論理値の掛け算のことを「論理積」と言います。

f:id:waenavi:20201007142004j:plain

 

両方とも70点以上であれば合格とするのですから、論理値を掛け算して、1であれば合格、0であれば不合格とすればよいのです。

f:id:waenavi:20201007142007j:plain

 

2つを掛けたものを論理式として、1の場合は合格、0の場合は不合格とします。

f:id:waenavi:20201007142011j:plain

 

これで完成です。

f:id:waenavi:20201007142015j:plain

 

別解

直接判定するには、2つの比較演算を直接掛け算します。

f:id:waenavi:20201007142050j:plain

 

両方TRUEの場合は掛け算で1となり合格、そうでなければ不合格とします。

f:id:waenavi:20201007142052j:plain

 

これで完成です(AND関数については後述)。

f:id:waenavi:20201007142055j:plain

 

5.未入力または0であることの判定

(1)0かそれ以外かの判定

問題

-5から5までの数値を入力した。0であれば×、それ以外は○と表示しなさい。

f:id:waenavi:20201007161934j:plain

 

解説

TRUEとFALSEは直前又は直後に四則演算があると、それぞれ1と0とみなされます。

f:id:waenavi:20201007162752j:plain

 

また、論理式に1と0を入力すると、それぞれTRUEとFALSEとみなされます。

f:id:waenavi:20201007162755j:plain

 

それでは、他の数値を論理式とした場合はどうなるかをやってみましょう。

f:id:waenavi:20201007162759j:plain

 

IF関数を挿入します。A列の数値を参照し、TRUEであれば○、FALSEであれば×とします。

f:id:waenavi:20201007162802j:plain

 

0以外すべて○になりました。

f:id:waenavi:20201007162806j:plain

 

論理式のところに数値を指定すると、0だけFALSEとなり、それ以外はプラスかマイナスかにかかわらず、すべてTRUEとみなされます。

f:id:waenavi:20201007162810j:plain

 

この性質を利用して、0かそれ以外かを判別することができます。

f:id:waenavi:20201007162814j:plain

 

空白にすると×になります。

f:id:waenavi:20201007162818j:plain

 

何も入力していない空白セルを参照すると数値の0とみなされるので、FALSEとなります。未入力セルと0はFALSE、それ以外はTRUEです。

f:id:waenavi:20201007162822j:plain

 

数値が入力されていることが分かっていて、0または未入力であることを判定する場合、比較演算をする必要はありません。

f:id:waenavi:20201007162826j:plain

 

(2)ゼロ除算の回避

問題

昨年と今年の数値を比較して昨年比を求めなさい。ただし、昨年の実績がない場合は「*」と表示しなさい。

f:id:waenavi:20201007162005j:plain

 

解説

昨年比は、変化した後の数値である今年の実績を、変化する前の数値である昨年の実績で割ります。

f:id:waenavi:20201007163050j:plain

 

昨年より今年のほうが成績が良い場合は100%を超えます。

f:id:waenavi:20201007163053j:plain

 

ところが、昨年の実績がない場合や入力していない場合はエラーになります。

f:id:waenavi:20201007163058j:plain

 

昨年比は昨年の数値の何倍になったかを表すものであり、元の数値が0であれば何倍しても0なので求めることができないのは当たり前のことです。

f:id:waenavi:20201007163103j:plain

f:id:waenavi:20201007163106j:plain

 

数値を論理式として指定すると、何も入力していない空白セルと0は、FALSEとなりますので、これを利用して、TRUEであれば昨年比を計算し、FALSEであれば計算しないようにすればよいです。

f:id:waenavi:20201007163110j:plain

 

IF関数を挿入します。昨年の数値を参照します。これがTRUE、つまり昨年の実績があれば昨年比を計算しますが、FALSEの場合は「*」を表示します。

f:id:waenavi:20201007163114j:plain

 

これで完成です。

f:id:waenavi:20201007163117j:plain

 

このように、割り算をする計算式の場合、割る数が0または空白のときに計算をしないようにします。

f:id:waenavi:20201007163120j:plain

 

6.「すべて」は個数で判定せよ!

(1)すべて空白セルであることの判定

問題

それぞれの行で、A列~F列がすべて空欄の場合は「NG」と表示しなさい。

f:id:waenavi:20201007162037j:plain

 

解説

まず、COUNTA関数で記号の個数を数えます。

f:id:waenavi:20201007163413j:plain

f:id:waenavi:20201007163416j:plain

 

COUNT関数やCOUNTA関数で個数を数えると、すべて空欄であれば0となります。

f:id:waenavi:20201007163557j:plain

 

論理式の場合はFALSEです。このことを利用して、TRUEであれば空白を返し、FALSEであればNGと表示します。

f:id:waenavi:20201007163601j:plain

 

IF関数を挿入します。1つ以上あれば空白、1つもなければNGとします。

f:id:waenavi:20201007163605j:plain

 

これで完成です。

f:id:waenavi:20201007163609j:plain

 

個数を数える関数のように、エラーでない限り必ず数値が返ってくる関数は、その答えが0かそうでないかを判定する場合、比較演算をする必要はありません。

f:id:waenavi:20201007163613j:plain

 

(2)すべて入力されていることの判定

問題

各行の空白セルの個数を数えなさい。また、空白が1つでもあれば「NG」と表示しなさい。

f:id:waenavi:20201007163624j:plain

 

解説

COUNTBLANK関数は選択した範囲の中で空白となっているセルの個数を数える関数です。

f:id:waenavi:20201007163817j:plain

 

COUNTBLANK関数を挿入します。A列からF列を選択します。

f:id:waenavi:20201007163821j:plain

 

空白が無ければ0となります。

f:id:waenavi:20201007163824j:plain

 

COUNTBLANK関数で個数を数えると、空白があれば1以上になります。論理式の場合はTRUEです。

f:id:waenavi:20201007163827j:plain

 

このことを利用して、TRUEであればNGと表示し、FALSEであれば空白を返します。

f:id:waenavi:20201007163831j:plain

 

IF関数を挿入します。空白があればNG、空白が無ければ空白を返します。

f:id:waenavi:20201007163835j:plain

 

これで完成です。

f:id:waenavi:20201007163839j:plain

 

7.論理値を返す関数

(1)AND関数、OR関数

AND関数、OR関数も論理値を返す関数ですから、IF関数の論理式としてそのまま使えます。詳しくはこちらの記事をご覧ください。

 

(2)ISODD関数、ISEVEN関数

問題

A列の数値が奇数だけ〇をつけなさい。また、偶数だけ〇をつけなさい。

f:id:waenavi:20201007170954j:plain

 

解説

ExcelにはISから始まる関数がいくつかあります。例えば、ISODD関数はODDつまり奇数であることを判定する関数です。

f:id:waenavi:20201007171953j:plain

 

ISから始まる関数は、ある条件に当てはまるかどうかを判定して、条件を満たせばTRUE、条件に反する場合はFALSEを返します。

f:id:waenavi:20201007171958j:plain

 

ISODD関数を挿入します。

f:id:waenavi:20201007172002j:plain

 

セルA2を判定します。これは奇数なのでTRUEになります。偶数の場合はFALSEとなります。0も偶数です。

f:id:waenavi:20201007172005j:plain

 

ISから始まる関数は判定した結果をTRUEまたはFALSEで返します。f:id:waenavi:20201007172008j:plain

 

なぜ、TRUEまたはFALSEを返すのかと言うと、IF関数の論理式として利用してもらうためです(それだけではありませんが・・・)。IF関数はTRUEまたはFALSEを別の文字列に変換します。

f:id:waenavi:20201007172011j:plain

 

これを利用して、奇数と判定されたものは〇、そうでないものは空白を返します。

f:id:waenavi:20201007172014j:plain

 

IF関数を挿入します。TRUEつまり奇数の場合は〇、そうでなければ空白とします。

f:id:waenavi:20201007172018j:plain

 

これで完成です。

f:id:waenavi:20201007172024j:plain

 

ISから始まる関数で判定した場合は、その関数自身がTRUEまたはFALSEを返すので、比較演算をする必要はありません。

f:id:waenavi:20201007172027j:plain

 

ISEVEN関数を挿入します。セルA2を判定します。

f:id:waenavi:20201007172032j:plain

 

偶数はTRUE、奇数はFALSEとなります。

f:id:waenavi:20201007172035j:plain

 

ISEVEN関数は偶数であることを判定する関数です。偶数であればTRUE、奇数であればFALSEとなります。

f:id:waenavi:20201007172038j:plain

 

IF関数を挿入します。TRUEつまり偶数の場合は〇、そうでなければ空白とします。

f:id:waenavi:20201007172041j:plain

 

これで完成です。

f:id:waenavi:20201007172044j:plain

 

ちなみに、空白セルは0とみなされますので偶数となります。

f:id:waenavi:20201007172046j:plain

 

<補足>

「=IF(ISODD,~,~)」は、ODD(奇数)であれば第2引数を返します。また、「=IF(ISEVEN,~,~)」は、EVEN(偶数)であれば第2引数を返します。このように、ISから始まる関数を論理式とすると、「該当すれば第2引数を返す式」となります。

 

(3)ISERROR関数

問題

A列がエラーになっていればNGと表示しなさい。

f:id:waenavi:20201007171023j:plain

 

解説

ISERROR関数はエラーであることを判定する関数です。エラーであればTRUE、エラーでなければFALSEとなります。

f:id:waenavi:20201007172159j:plain

 

ISERROR関数を挿入します。セルA1を判定します。

f:id:waenavi:20201007172203j:plain

 

エラーの場合だけTRUEになります。

f:id:waenavi:20201007172207j:plain

 

IF関数を挿入します。TRUEつまりエラーの場合はNG、そうでなければ空白とします。

f:id:waenavi:20201007172210j:plain

 

これで完成です。

f:id:waenavi:20201007172212j:plain

 

<補足>IFERROR関数を用いる方法もあります。詳しくはこちらの記事をご覧ください。

 

(4)EXACT関数

問題

A列とB列の文字列を比較演算によって一致していることを判定した。ところが、明らかにA列とB列の内容が異なるのにTRUEになってしまった。A列とB列の文字列を比較して異なる場合は「×」と表示しなさい。

f:id:waenavi:20201007172227j:plain

 

解説

数値も文字列も通常はイコールによって一致することの判定をすることができます。

f:id:waenavi:20201007175713j:plain

 

しかし、一部例外があります。例えば、英語の大文字と小文字は区別されません。また、空白セルは0やFALSEと同じものとみなされます。

f:id:waenavi:20201007175717j:plain

 

EXACT関数(イグザクト)は、2つの文字列を比較して、まったく同じである場合はTRUE、そうでない場合はFALSEを返します。2つの文字列の間にはカンマが必要です。

f:id:waenavi:20201007175720j:plain

 

EXACT関数を挿入します。2つのセルを参照します。

f:id:waenavi:20201007175724j:plain

 

すべてFALSEとなります。大文字と小文字も区別されます。

f:id:waenavi:20201007175728j:plain

 

また、空白セルと入力されているセルも区別されます。

f:id:waenavi:20201007175731j:plain

 

EXACT関数は、ISから始まる関数と同じようにTRUEとFALSEを返す関数です。このまま論理式として使用し、IF関数で別の文字列に変換することができます。

f:id:waenavi:20201007175734j:plain

 

IF関数を挿入します。TRUEつまり一致すれば空白、そうでなければ×とします。

f:id:waenavi:20201007175738j:plain

 

これで完成です。

f:id:waenavi:20201007175742j:plain

 

8.補足:「1から論理値を引く」と否定になる

論理値は直前に引き算があるとTRUE=1、FALSE=0とみなされます。1からTRUEを引くと0=FALSEになり、1からFALSEを引くと1=TRUEになります。1から論理値を引くとTRUE/FALSEが逆になります

  • 1-TRUE=1-1=0 → FALSE
  • 1-FALSE=1-0=1 → TRUE

ISERRORはエラーのときにTRUEとなりますが、逆にエラーでない場合をTRUEとするには、1から引けばよいです。「否定をするときは1から引く」と覚えておけば良いです。

  • =1-ISERROR(A1)

 


解説は以上です。


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

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

 


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