IF関数の仕組みをおさらい
データの内容を判定する定番の関数といえば、IF(イフ)関数ですよね。構文は以下のとおりです。
=IF
(論理式, 真の場合, 偽の場合)
- [論理式] ... データを判定する条件式(論理式)
- [真の場合] ... 条件に一致する場合の結果
- [偽の場合] ... 条件に一致しない場合の結果
例として、ある製品のテスト結果が「80」以上なら「合格」、「80」未満なら「不合格」と表示してみます。
『セルC3の結果が「80」以上』の条件式(論理式)は「C3>=80」です。[真の場合]には「"合格"」、[偽の場合]には「"不合格"」と指定します。
セルC3に入力されているテスト結果を判定したいので、条件式(論理式)は「C3>=80」となります。[論理式][真の場合][偽の場合]の間は、それぞれ半角の「,」で区切って、「"合格"」と「"不合格"」を入力します。表示させる文字列は半角の「"」で囲みます。
では、「80」以上で「合格」、「70」以上で「再検査」、「70」未満は「不合格」とするにはどうしましょう? 一見難しそうですが、IF関数の入れ子(ネスト)の仕組みを理解すれば簡単です。ここではIF関数で2つ、3つと条件が重なるときのコツを紹介します。
[偽の場合]の引数をいったん削除して考える
『「80」以上で「合格」、「70」以上で「再検査」、「70」未満は「不合格」』とすることを考えてみます。まず、先ほど入力した関数式を見てみましょう。
=IF(C3>=80,"合格","不合格")
先頭から「=IF(C3>=80,"合格",」の意味は、『セルC3が「80」以上なら「合格」』です。[偽の場合]の「"不合格"」をいったん削除すると、以下のようになります。
=IF(C3>=80,"合格",
『セルC3が「80」以上なら「合格」』の関数式はこのままでOKなので、これにつながる『「70」以上で「再検査」、「70」未満は「不合格」』の関数式を考えればいいわけです。
IF(C3>=70,"再検査","不合格")
条件は1つなので、すぐに思いつくのではないでしょうか。関数式をあわせると、
=IF(C3>=80,"合格",IF(C3>=70,"再検査","不合格")
となります。ポイントは閉じ括弧「)」の数です。先頭から「(」を数えると2つあります。「(」と「)」の数が一致している必要があるので、末尾に「)」を追加して関数式の完成です。
=IF(C3>=80,"合格",IF(C3>=70,"再検査","不合格"))
完成した関数式は『セルC3が「80」以上なら「合格」、(そうでなければ)セルC3が「70」以上なら「再検査」、「70」未満は「不合格」』という意味になります。
なお、「)」の数が不足している場合、以下のようなメッセージが表示されます。[はい]ボタンをクリックすれば「)」は補完されますが、「)」の数を意識して入力すると関数式の扱いが上達すると思います。
「)」の数が不足している場合に表示されるメッセージです。
実際に操作してみましょう。
1[偽の場合]の引数を削除する
セルD3を編集可能状態にして、[偽の場合]の「"不合格"」を削除します。
「=IF(C3>=80,"合格",」のみになりました。
2続きの関数式を入力する
「=IF(C3>=80,」に続けて、「IF(C3>=70,"再検査","不合格")」と入力します。[Enter]キーはまだ押さないでください。
3「)」を追加する
関数式の末尾に「)」を追加して、[Enter]キーを押します。
4IF関数の条件を追加できた
条件が追加され、関数式の結果が変わりました。
条件の追加によって結果が切り替わりましたね。ただし、この例のように数値を判定する場合は、厳しい条件から順に指定する必要があります。
例えば「=IF(C3>=70,"再検査",IF(C3>=80,"合格","不合格"))」という関数式を考えます。セルC3が「80」だとすると、1つ目の条件「C3>=70」を満たして「再検査」と表示されてしまいます。
3つ目の条件指定も考え方は同じ
今度はもう1つ条件を追加して、『「80」以上で「合格」、「70」以上で「再検査」、「60」以上で「要報告」、「60」未満は「不合格」』としてみましょう。
3つ目の条件を指定する際の考え方も、先ほどと同じです。最終的に入力する関数式は以下になります。
=IF(C3>=80,"合格",IF(C3>=70,"再検査",IF(C3>=60,"要報告","不合格")))
2つ目の条件までは残して「"不合格"」を削除します。
=IF(C3>=80,"合格",IF(C3>=70,"再検査",
追加する条件『「60」以上で「要報告」、「60」未満は「不合格」』は、以下のようになります。
IF(C3>=60,"要報告","不合格")
この関数式をつなげればいいわけです。先ほどと同じように、閉じ括弧「)」の数には注意です。「(」の数にあわせて「)」を2つ追加して3つにします。
1[偽の場合]の引数を削除する
先ほどと同様に、セルD3の関数式から「"不合格"」を削除します。
2続きの関数式を入力する
「=IF(C3>=80,"合格",IF(C3>=70,"再検査",」に続けて、「IF(C3>=60,"要報告","不合格")」と入力します。[Enter]キーはまだ押さないでください。
3「)」を2つ追加する
関数式の末尾に「)」を2つ追加して、[Enter]キーを押します。
4関数式をコピーする
条件を追加できました。結果を確認するためにオートフィルで関数式をコピーします。
結果が変更されました。「80」以上で「合格」、「70」以上で「再検査」、「60」以上で「要報告」、「60」未満は「不合格」となっていることがわかります。
複数の条件を指定する場合、条件が1つのみの関数式を修正するのが簡単です。ここでは都度「"不合格"」を削除して関数式を修正しましたが、慣れてくればピンポイントにIF関数を組み込めるようになると思います。