今回はExcelで最もよく使われる関数の一つであるIF関数について説明します。IF関数は条件分岐を設定するための関数です。
条件分岐とは何か
条件分岐というのはプログラミング経験者にとっては頻出用語ですが、プログラミングに触れたことのない人のために以下の図を使って条件分岐という言葉の意味から説明します。
条件というのは物事を決定するための前提のことです。条件分岐というのは、その前提を満たしているかどうかで、決定の内容が変わってくる(分岐=枝分かれする)ということです。上の例でいえば、”テストの点数が80点である”という前提を満たすことができれば、”Yes”の分岐に進み、”評価A”という決定がなされます。前提を満たしていなければ”No”の分岐に進みます。同様の分岐を繰り返し、最後は点数が40点以上なら”評価C”となり、前提を満たさなければ”No”の分岐に進み”赤点”が決定され、ここで分岐は終了します。これが条件分岐です。
If関数の使い方
1つの条件分岐
まずはIF関数を使って1つの条件分岐を設定する方法を説明します。IF関数の基本的な使い方は以下の通りです。
=IF(論理式,論理式が真の場合の処理,論理式が偽の場合の処理)
具体的に使い方を説明します。上の図の評価基準に従って以下の山田さん、田中さん、鈴木さんの合否判定してみましょう。
具体的には以下のように式を設定します。
まず論理式を設定します。IF関数の”論理式”は条件と読み替えます。今回は”点数が40点以上なら合格、そうでないなら不合格”とすることで合否を判定できるので、合格条件は”点数が40点以上である”ことです。上では、”C3>=40“という部分が該当します。C3セルには山田さんの点数である”76″が入力されています。
次に、論理式の真偽によって分岐させる処理を設定しますが、その前に真偽(True/False)というのがどういうことかを説明します。例えば論理式(条件)が”1 + 1=2″だとした場合、1 + 1=2という論理式は正しい、つまり真(True)であると言えます。一方で論理式(条件)が”1 x 1=2″だとした場合、1 x 1=2という論理式は誤り、つまり偽(False)であると言えます。これが論理式が正しいかどうか、つまり論理式の真偽です。
今回のケースで論理式(条件)が真(True)であるというのは、”点数が40点以上である”ということになりますので、その場合の処理は”合格”という文字列を表示させるという内容にします。反対に、”論理式が偽”なのは”40点以上ではない”、言い換えると”40点未満である”ということを意味しますので、その場合の処理は”不合格”という文字を表示させます。結果的に、山田さんは”76”点なので、”合格”が表示されました。
同様の条件を田中さんと鈴木さんにも適用すると、以下の通りとなります。
複数条件 – IFS関数
次にIFS関数を使って複数条件を用いた条件分岐を設定する方法を説明します。基本的な使い方は以下の通りです。
=IF(論理式1,論理式1が真の場合の処理,論理式2,論理式2が真の場合の処理,論理式3,論理式3が真の場合の処理)
上で説明したIF関数の条件分岐を複数設定できるのが見て取れるかと思います。上では論理式を3つ設定していますが、もちろん3つ以上の条件も設定できます。
また、複数条件を設定した後で、最後に”どれにも当てはまらない場合は”としたい場合は、論理式に”True”を設定します。具体的には以下のように設定できます。意味は、”80以上なら”A”、60以上なら”B”、40以上なら”C”、それ以外なら”赤点””です。
注意点として、複数の条件に該当する場合は順序が重要で、初めに適用された処理が適用されることを理解しておきましょう。上の処理では、論理式①を”点数が80点以上”、論理式②を”点数が60点以上”としています。例えば点数が90点の人はまず論理式①を満たしており”A”と判定されるので、後続の論理式②を満たしていますが、”B”とは判定されません。
例えば以下では山田さんの点数を90点に変更した上で、論理式①と論理式②の順番を入れ替えてみました。先に”60点以上なら評価B”が適用されるので、山田さんの評価はAではなくBとなっていますね。
上記のように、IFS関数を使うことで冒頭で示したような条件分岐を設定することができました。
エラーを表示しない – IFERROR関数
続いて、エラーが起きた時の処理を決めておく”IFERROR関数”について説明します。この関数は、計算結果でエラーが出ることが想定されるようなケースで非常によく使います。詳しくは以下の記事で説明していますので、ご参照ください。
その他のIF関数
上記では基本となるIF関数のほか、IFS関数とIFERROR関数も紹介しました。他にも以下のような条件分岐を含む関数がありますのでご参照ください。
コメント