IF関数とは
「データの中から、ある条件に合うデータだけを抽出するにはどうすればいいんでしょうか」または「各データを一定のルールで自動判定していきたいんですが」など、よくあるご質問です。このようなケースで使えるのがIF関数です。Excel実務で極めて使用頻度が高い重要な基礎関数になります。例えば次のような表で、B列の得点欄に数字が入っている時、C列の判定欄に次のようなルールでその数字の評価を入力したいとします。
C列にAかBかの判定を自動入力したい表
- 得点が80以上だったら「A」
- そうでなかったら(つまり79以下なら)「B」
<INDEX>
条件を判定する論理式と比較演算子の種類
この関数をしっかり理解するには、まず条件に一致するかしないかを判定する式について理解する必要があります。その判定式のことを「論理式」と呼びます。具体例を見ながら理解していきましょう。次の図では、「B2セルの値が80以上かどうか」を判定するために次の式をC2セルに入力しています。=B2>=80
C2セルに「=B2>=80」と入力した結果
B2セルの値が80以上の場合、つまり「B2>=80」という式が成り立つ場合、この式は「TRUE」という答えをC2セルに表示します。
一方、B2セルの値が79以下である、つまり「B2>=80」という式が成り立たない場合、この式は「FALSE」という答えをC2セルに表示します。
上の図の場合、B2セルの値は68ですから80以上ではないので、「FALSE」が出てくるわけですね。この式を11行目までコピーすればこのようにそれぞれTRUEかFALSEかで自動判定されるわけです。
このように論理式は「比較演算子」を使って条件を設定し、その条件が成り立つ場合(これを「真の場合」と言います)はTRUE、その条件が成り立たない場合は(これを「偽の場合」と言います)FALSEという答えを出すことができる式なのです。
通常、式の答えというのは一つに決まりますが、この論理式に限っては「TRUE」か「FALSE」の二つに答えが分かれるということなのです。
比較演算子の種類
- = (イコール)→左辺と右辺が同じ、等しい
- >(大なり)→左辺が右辺より大きい
- <(小なり)→左辺が右辺より小さい
- >=(大なりイコール)→左辺が右辺以上である
- <=(小なりイコール)→左辺が右辺以下である
- <>(ノットイコール)→左辺と右辺が異なる、等しくない
IF関数の基本
この論理式の答えである「TRUE」や「FALSE」を、自分で指定した文字列や数式処理に置き換えることができるのがIF関数ということになります。では、この論理式の答えがTRUEになる場合は「A」、そうでない場合は「B」とC列に入力するIF関数の式を見てみましょう。
C2セルに次のように入力します。
=IF(B2>=80,"A","B")
C2セルに「=IF(B2>=80,"A","B")」と入力した結果
この式を11行目までコピーすれば得点によってAかBかの判定結果が入力されます。
IF関数は括弧の中に次のような役割を持つ3つの引数を指定します。
=IF(論理式,真の場合,偽の場合)
つまり、第一引数に書いた論理式の答えがTRUEになる場合、つまり「真の場合」になる場合は第二引数に指定した「真の場合」の文字列(上記の例では「A」)や数式を使います。
一方、第一引数に書いた論理式の答えがFALSEになる場合、つまり「偽の場合」になる場合は第三引数に指定した「偽の場合」の文字列(上記の例では「B」)や数式を使います。
このように、第一引数の論理式で指定した条件に一致するかしないかで、第二引数と第三引数のどちらかを自動で使い分けてくれるということなのです。
応用1. 「空白なら空白」を表示させる方法
この時、B列のセルが空白だと、C列には「FALSE」が出てしまいます。このような時に「B列のセルが空白だったらC列も空白にしたい」ということがよくあります。これは次のような式で実現できます。=IF(B2="","",IF(B2>=80,"A","B"))
ここで一つの式に「IF」が2つ出てきました。
これは
「B2セルが空白("")だったらこのセルも空白にして、そうでなかったら第三引数に指定したIF関数の処理を行え」
という意味の命令文になっています。
では次にこのような一つの式にIFを複数回組み込むテクニックをお伝えします。
応用2. 複数の条件を指定する方法
先ほどの例では「得点が80以上か否か」という二択で処理する条件分岐でしたが、では次のような条件分岐はどうすればよいでしょうか。「得点が80以上の場合はA、50以上の場合はB、49以下の場合はC」
判定結果が3つに増えました。このような処理の基本としてまず「IF関数のネスト(入れ子)」という方法があります。
=IF(B2>=80,"A",IF(B2>=50,"B","C"))
このように、IF関数の中にさらにIF関数を組み込んでいくことを「ネスト」と言います。この場合は2つの式をネストしているわけですが、IF関数のネスト数の上限はExcel2007以降では64個までネストできるようになっています。
しかしあまりにもたくさんのネストをし過ぎると後々のメンテナンスが難しくなり意味もわかりづらくなってしまうので、せいぜい3つまでにしておきたいところです。
しかしこのような「データの変換」の作業では、より多くの変換が必要になるケースは当然実務では発生します。そのような際はVLOOKUP関数で簡単に済ませるなどの工夫が重要になります。このテクニックは別途ご紹介して参ります。
※Excel2016からは複数の条件分岐をより簡易にしたIFS関数が登場しました。次のような書式になっています。
=IFS(論理式1,真の場合,論理式2,真の場合…)
上記の例の場合、次のような式で済むことになり、もうIF関数のネストが必要なくなります。
=IFS(B2>=80,"A",B2>=50,"B",B2<50,"C")
ただしExcel2013以前ではこの関数は使えないので、やはり当面の間は基本であるネストもきちんと押さえておいて頂きたいと思います。
応用3. OR関数、AND関数、NOT関数との合わせ技
複数の条件が成立するかどうかを調べるためにはAND関数とOR関数を使うと便利です。これらの関数をIF関数の論理式に組み込むことで、より複雑な条件設定が可能になります。- AND関数
括弧内に指定したすべての論理式がTRUEになる場合、このAND関数の答えはTRUEになります。一つでもFALSEになる論理式がある場合、このAND関数の答えはFALSEになります。論理式は最大255個まで指定できます。
- OR関数
指定した複数の論理式のうち一つでもTRUEになるものがあればTRUEになり、すべての論理式がFALSEになる場合はこのOR関数の答えはFALSEになるというものです。こちらも論理式は最大255個まで指定できます。
また参考までに、論理式の値がTRUEであればFALSEを返し、FALSEであればTRUEを返すNOT関数というものもあります。
例えば次の表で「営業部とマーケティング部"以外"を抽出したい」という場合……つまり営業部とマーケティング部以外にTRUEをつけて抽出したいという状況があったとします。
NOT関数の使用列
B2セルには次のような数式を入れています。
=NOT(OR(A2="営業部",A2="マーケティング部"))
しかしこれはNOT関数など使わなくても、
=AND(A2<>"営業部",A2<>"マーケティング部")
という式で片づいてしまいます。表現が違うだけで同じ結果になります。このあたりはケースによってわかりやすくなる方を使えば結構です。これらをIF関数の第一引数に使うことで、より複雑な条件を判定するIF関数の式が作れるようになるのです。