IF関数で複数の関数を組み合わせる
IF関数は、Excelなどの表計算ソフトでよく使用する関数です。IF関数で指定する論理式は、論理演算子や関数などで構成されます。IF関数では、複数の関数を組み合わせて複雑な条件を設定することができます。ここでは、概要から実際の使用方法を解説していきます。
【参考】:Microsoft サポート: EXCEL での AND 関数、OR 関数、および NOT 関数での IF の使用
IF関数の概要
IF関数は、表計算ソフトで使用する論理関数の1つです。論理式の条件が真(TRUE)の場合と、偽(FALSE)の場合で値を指定することができます。構文は次の通りです。
IF(論理式, 論理式が真の場合の値, [論理式が偽の場合の値])
論理式には、比較演算子などの演算子や論理関数を用います。比較演算子は値の大小や等号などを、「>」「<」「=」「<=」「>=」「<>」などを用いてセルの値と比較して使用します。
例えば、試験のテスト結果が85点以上の場合に「優秀」と値を返すには次のように記述します。
=IF(セル番号>= 85, "優秀", "-")
この例では論理式が偽(FALSE)の場合は、 ”-” を返します。偽の場合の値を指定しない場合は、FALSEが戻ります。
【参考】:Microsoft サポート: IF 関数 【参考】:Microsoft サポート: Excel の数式に計算演算子を使用する
AND関数の概要
AND関数は、記述した条件すべてが真(TRUE)かどうかを判断する論理関数です。IF関数と組み合わせて使用します。構文は次の通りです。
AND(論理式1, [論理式2,],,)
使い方ですが、例えば3科目のテスト結果すべてが85点以上の場合は「優秀」と値を返すには次のように記述します。
=IF(AND(セル番号1>= 85, セル番号2>= 85, セル番号3>= 85), "優秀", "-")
AND関数の場合は、論理式のいずれか1つでも偽(FALSE)の場合は偽となります。すべての論理式が真(TRUE)の場合のみに、真で指定した値を返します。
OR関数の概要
OR関数は、記述した条件のいずれかが真(TRUE)かどうかを判断する論理関数です。AND関数同様にIF関数と組み合わせて使用します。構文は次の通りです。
OR(論理式1, [論理式2,],,)
3科目のテスト結果のいずれかが85点以上かどうか判断するには、次のように記述します。
=IF(OR(セル番号1>= 85, セル番号2>= 85, セル番号3>= 85), "優秀", "-")
NOT関数の概要
NOT関数は、論理値の値を反転します。つまり真(TRUE)を偽(FALSE)に置き換え、偽(FALSE)の場合は真(TRUE)を返します。構文は次の通りです。
NOT(論理値)
実際に使う場合は、AND関数やOR関数の論理値を反転させて使います。
NOT(AND(論理式1, [論理式2,],,))
NOT(OR(論理式1, [論理式2,],,))
IF関数で複数の関数を実際に使用する
これまでに、IF関数や論理関数を学んできました。IF関数は多様な集計に用いられます。ここからは前半にAND関数、OR関数、NOT関数の使い方を解説します。後半は、これらの関数を組み合わせて実際の使用場面に合わせて解説していきます。
解説で用いるサンプルシートは、学生の試験結果の集計結果です。学籍番号のほか、基本情報、そして試験結果が英語、国語、数学の3種類からなります。このシートを用いて、集計の仕方を学んでいきます。
IF関数でAND関数を使用する
AND関数は、IF関数で用いる論理関数の1つです。ここでは、試験結果から英語、国語、数学の3種類を使用します。この3科目すべてが85点以上の場合、「特待生」として集計してみましょう。記述するにはE列〜G列の値を論理式で表し、すべてが85以上であれば「該当」を返します。
例えば3行目の学籍番号90001の場合は、以下のように記述します。
=IF(AND(E3>=85, F3>=85, G3>=85), "該当", "-")
次のように、AND関数の論理式は「E3>=85」、「F3>=85」、「G3>=85」の3つを記述します(①②③)。すべての論理式が真(TRUE)の場合、真を返します。AND関数の結果に基づいて真の場合と偽の場合の値を記述すると、セルに指定した値が入ります(④)。
IF関数の演算結果から、「該当」を示すのは学籍番号90002の1名のみであることがわかります。
なお、セルの数式を入力し終わったらそのセルを選択し、ドラッグアンドドロップで残りのセルにコピーすることができます。数式のコピーが終わったら、各セルの値はオートフィルで自動的に結果を求めることができます。
IF関数でOR関数を使用する
OR関数も、AND関数と同様にIF関数でよく用いる関数です。ここでは、英語、国語、数学のいずれか1つの科目でも85点以上であれば、「該当」と判断します。
AND関数と同様の条件で、学籍番号90001のケースでは、次のように表すことができます。
=IF(OR(E3>=85, F3>=85, G3>=85), "該当", "-")
OR関数で用いる論理式は「E3>=85」、「F3>=85」、「G3>=85」の3つです(①②③)。論理式のいずれかが真(TRUE)の場合、真を返します。ここでは、OR関数の結果が真の場合が「該当」、それ以外は「-」を返すように記述します(④)。
IF関数でNOT関数を使用する
NOT関数は、論理式の値を反転します。3科目のいずれも85点に達しない条件式は、次のように表します。
=IF(NOT(OR(E3>=85, F3>=85, G3>=85)), "該当", "-")
この結果は、先のOR関数で示した論理式の結果を反転したものです(①②③)。このNOT関数によって、真の「該当」が偽に反転し、偽が真の「該当」に反転していることがわかります(④)。
IF関数で複数の関数を組み合わせて使用する
これまでにAND関数やOR関数、NOT関数の使い方を学びました。ここでは、関数を組み合わせて複雑な論理式の作り方を解説していきます。
例えば、全科目が85点以上を「特待生」とし、いずれか1科目以上が85点以上を「優待生」とします。これに該当しない学生を「一般」とします。この計算はAND関数とOR関数の組み合わせで、求めることができます。
「特待生」は、次のようにAND関数が真のときに返す値です。
=IF(AND(E3>=85, F3>=85, G3>=85), "特待生")
ここで「特待生」以外は、「優待生」と「一般」を表すため、IF関数のネスト(入れ子)で条件を記述します。つまり、真が「特待生」、偽が「優待生」あるいは「一般」です。先のIF関数に次のように偽の処理を追加します。
=IF(AND(E3>=85, F3>=85, G3>=85), "特待生", IF関数で「優待生」あるいは「一般」を求める)
IF関数で「優待生」あるいは「一般」を求めるには、次のようにOR関数を用いて記述します。
=IF(AND関数で特待生を求める, "特待生", IF(OR(E4>=85, F4>=85, G4>=85), "優待生", "一般"))
すべての記述を省略せずに記述すると、次の図のように表すことができます。すべての科目が85点以上は「特待生」(①③)、3科目中いずれかの科目が85点以上の場合は「優待生」(②④)、それ以外は「一般」(⑤)と仕分けできます。
ここではIF関数の偽の場合の仕分けにIF関数を加えました。IF関数は、さらにネストつまり入れ子にすることも可能で、入れ子を増やしていけばより複雑な処理が可能です。
ただし、カッコの数や位置の間違いも生じやすいため、必要に応じて別のセルに集計項目を増やしていくと良いでしょう。
例えば、成績上位の区分だけではなく60点未満の学生の指導などを並行して行う場合は、別のセルに入力する方が見やすくなります。AND関数とNOT関数を用いると次のように表すことができます。
=IF(NOT(AND(E3>=60, F3>=60, G3>=60)), "指導対象", "-")
図のようにAND条件はすべてが60点以上を表し、NOT関数で値を反転します(①)。1つでも60点未満の学生は「指導対象」となり、「優待生」でも「指導対象」の科目がある学生がいることがわかります(②③)。
これらの使い方は、3つ以上の複数条件などでも、自由に記述し使いやすくすることができます。
IF関数の論理関数の併用はそれぞれの用途で使い分ける
IF関数は、論理値の真と偽の場合の値を返す関数です。AND関数とOR関数、そしてNOT関数を併用するのがメンテナンス性の視点でも有効です。そのため、複数条件の場合は用途に応じて論理関数を組み合わせ、複雑な集計や仕分けに活用するのがおすすめです。
その他の関連記事
その他に関連する内容は、下記の記事でも紹介しています。ぜひ参考にしてください。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから