Excel関数を使う数式の引数の1つとして関数を使用すると、関数の中に関数を入れることになります。このような数式のことを関数の入れ子(ネスト)といいます。特に、IF関数の中にIF関数を入れることを「IF関数の入れ子」ということがあります。
ところで、Excelの市販のテキストやネット上の解説には、IF関数の入れ子によって3種類以上の表示をすることが可能であることが書かれていることが多いです。確かに、3種類の表示をする数式「=IF(条件1,A,IF(条件2,B,C))」は、何回も繰り返し練習して暗記すべき重要な公式です。
しかし、IF関数の入れ子で最も重要なことは3種類に分けて表示することではなく、入れ子をするときに入力する2つの条件の順序です。外側のIF関数と内側のIF関数で、条件を逆にすると思った通りの結果にならないことがあります。単に入れ子の形を暗記するだけでなく、2つの条件がどのような手順で判定されるのかを理解しなければなりません。
そこで、今回は、IF関数の入れ子の入力方法と、入れ子にした時の条件の順序について出題します。
目次
1.3種類に分けて表示する
(1)IF関数の内側にIF関数を入れる
問題
A列の数値が80以上であればA、そうでなければBと表示しなさい。また、Bと表示しているもののうち、60以上のものだけをBとし、それ以外をCと表示しなさい。
解説
IF関数を挿入します。
80以上であることの判定をします。80以上であればA、そうでなければBとします。
Bと表示されているのは80未満です。
80以上の判定をするとその判定結果はTRUEまたはFALSEになりますが、TRUEであればA、FALSEであればBと変換して表示させているのはIF関数です。Bと表示されているのは、80以上の判定でFALSEだったからです(参考:IF関数は、判定しているのではなく「変換しているだけ」であることを理解せよ【Excel】)。
FALSEの場合に、値を表示せずに計算式を入力して計算をさせることも可能です。
さらに、TRUEまたはFALSEの比較演算をすることも可能です。
Bの代わりに60以上の比較演算「A1>=60」を記述します。
Aと表示されているものは変わりませんが、Bと表示されていたものがTRUEとFALSEになりました。
80未満のうち60以上と判定されたものがTRUE、それ以外がFALSEと表示されました。
さらに、IF関数を用いて、TRUEとFALSEを別の文字列に変換することができます。
IF関数を挿入します。IF関数を挿入するのは比較演算の直前です。TRUEであればB、そうでなければCと表示します。
最後のカッコを忘れてはいけません。
先頭のIF関数で80以上の判定をし、その結果TRUEであればAと表示されますが、FALSEであれば、さらにIF関数で60以上の判定をし、その結果TRUEであればB、FALSEであればCと表示されます。
このようにIF関数を2つ使うことで3種類に分けて表示をすることができます。
(2)IF関数の入れ子の入力練習
問題
さきほどの設問(1)の数式を先頭から入力しなさい。また、何度も繰り返し練習しなさい。
解説
初めから2つの条件によって3種類に分けることが分かっている場合は、最初のIF関数の真の場合を入力した直後に、IF関数を挿入します。
この時カッコとカンマが多くなるので、カッコとカンマの意味を考えながら入力します。
IF関数を挿入します。この時のカッコはIF関数の始まりを表すカッコです。
1つ目の条件である80点以上を記述します。TRUEであればAとします。FALSEのときにIF関数を挿入します。この時のカッコは2つめのIF関数の始まりを表すカッコです。
2つ目の条件である60点以上を記述します。TRUEであればB、FALSEであればCです。括弧を閉じます。
この時のカッコは2つめのIF関数の終わりを表すカッコです。
さらに、もう1つカッコを閉じます
この時のカッコは1つめのIF関数の終わりを表すカッコです。
これで完成です。素早く入力できるように何回も繰り返し練習しましょう。
2.IF関数の外側にIF関数を追加する
問題
A列の数値が偶数であればA、そうでなければBと表示しなさい。ただし、A列が空白の場合は空白を返しなさい。
解説
IF関数を挿入します。
偶数であることを判定するためにISEVEN関数を挿入します(参考:IF関数の条件に「等号や不等号が必要」と思っているなら、IF関数を勉強し直してほしい)。
TRUEであればA、FALSEであればBと表示します。このとき、空白は数値の0とみなされますので、偶数と判定されます。
A列が空白のときに空白を返すのは、偶数の判定をする前です(参考:【Excel】空白セルの判定をして、IF関数で「空白文字列」を返す方法と注意点)。
このようにIF関数の判定を避けるために、外側にIF関数を追加することがあります。
IF関数を挿入します。空白のときに空白を返します。
最後にカッコを閉じるのを忘れてはいけません。
これで完成です。
3.包含関係にある場合の入れ子の順序
問題
60点以上であれば合格、80点以上であれば優秀と表示しようとしたが、80点以上も合格と表示された。この理由を述べたうえで、数式を修正しなさい。
解説
60点以上を判定して合格と表示して、その後で80点以上を判定して優秀と表示する式を入力しています。この数式は誤りです。
- =IF(A2>=60,"合格",IF(A2>=80,"優秀",""))
IF関数の中にIF関数を入れることがありますが、このときに入力する2つの条件には順序があります。
この式は最初に60点以上であることを判定します。60点以上であればTRUE、60点未満であればFALSEになります。
1つ目のIF関数によって、TRUEであれば合格と表示されますが、FALSEの場合は2つ目のIF関数の計算をします。
したがって、60点以上であればすべて合格と表示され、2つ目のIF関数のほうには入りません。80点以上の場合も合格となります。
2つ目のIF関数は60点未満の場合だけ実行されます。
すでに60点未満であることが確定しているのに、80点以上を判定するのは無意味です。
TRUEになるわけがありません。かならずFALSEになりますので空白となります。
最初のIF関数と2番目のIF関数を逆にします。
80点以上であることを判定してから、80点未満の中から60点以上のものを判定するのであれば意味があります。
1つ目のIF関数によって、TRUEであれば優秀と表示され、FALSEの場合は2つ目のIF関数の計算をします。
2つ目のIF関数は80点未満の場合だけ実行されます。
2つ目の条件は60点以上ですが、そのまえに80点以上が除かれているので、実質「60点以上80点未満」となります。
TRUEであれば合格と表示されますが、FALSEの場合は空白となります。
60点以上の人の中には、80点以上の人も含まれます。
このように含まれる関係にある場合は、内側にある条件、つまり厳しい条件のほうを先に判定します。
4.入れ子の順序によって結果が異なることがある
問題
10以上であればA、奇数であればB、それ以外はCと表示しなさい。このとき、10以上の奇数は何と表示されるか。
解説
IF関数を挿入します。はじめに10以上であることを判定します。10以上であればAとします。
2つ目のIF関数を挿入します。
奇数であればB、そうでなければCと表示します。
このとき、10以上の奇数はAとなります。
この式は最初に10以上であることを判定します。10以上であればTRUE、10未満であればFALSEになります。
1つ目のIF関数によって、TRUEであればAと表示されますが、FALSEの場合は2つ目のIF関数の計算をします。
したがって、10以上であれば偶数か奇数かにかかわらずすべてAと表示され、2つ目のIF関数のほうには入りません。
2つ目のIF関数は10未満の場合だけ実行されます。
2つ目の条件は奇数ですが、そのまえに10以上が除かれているので、実質「10未満の奇数」となります。
TRUEであればB、FALSEの場合はCとなります。
10以上という条件と、奇数という条件は、両方満たす場合もあれば、どちらか一方だけを満たす場合もあります。
「10以上の奇数」は両方の条件を満たしていますが、最初のIF関数でTRUEと判定されるのでその結果が表示されるのです。2つの条件を両方満たす場合は、最初のIF関数でTRUEとなり、2つ目のIF関数は無視されます。
IF関数の順序を逆にしたとします。
今度は10以上の奇数がBとなります。
このように判定する2つの条件を両方満たすことがある場合、判定する順序によって表示結果が異なりますので注意が必要です。
解説は以上です。
5.動画版はこちら(無料)
この記事は、わえなび実力養成講座「ファンダメンタルExcel13」Program 13-24、13-25 のYoutube動画を書き起こして、加筆修正したものです。
- ファンダメンタルExcel 13-24 IF関数の入れ子1(3種類の表示をする)【わえなび】(ファンダメンタルExcel Program13 IF関数の基本)
- ファンダメンタルExcel 13-25 IF関数の入れ子2(入れ子の順序)【わえなび】(ファンダメンタルExcel Program13 IF関数の基本)