IF関数は、特定の条件によって返す値を変えたい(つまり条件に合うかどうかの結果で次の処理方法をコントロールしたい)時に使う関数です。
様式:=IF(条件式,A,B)
『もし、この条件式(論理式と呼ばれます)が成立する(True)ならA、
成立しない時(False)はBにする』
ここで、AやBは処理の仕方を示しているもので、具体的には数値や文字列であったり、値などを保持しているセルを参照するものであったり、数式や条件式であったりと、いろいろです。数式や条件式にはもちろん関数が含まれることがあります。
IF関数は便利な関数で、他の関数と組み合わせたリ、 IF関数の中にIF関数を入れたりして、複雑な数式の組み立てができます。
Excelが好きになるかどうかの分かれ道がIF関数かもしれません。頑張って理解し、使いこなしてください。
条件式(論理式)で使う記号(比較演算子といいます。)は、以下の6通りです。
等しくない(Not Equal)には、<> を用いることが意外に知られていません。
(Excelでは不等号(≠)は使えません。)
比較の対象には文字列も可能です。比較する文字列はダブルクォーテーション(")で囲みます。
文字列の比較は、=(等しい)か、<>(等しくない)だけが使われます。
A=B AとBが等しい
A>B AがBよりも大きい
A<B AがBよりも小さい
A>=B AがB以上(大きいか等しい)
A<=B AがB以下(小さいか等しい)
A<>B AとBが等しくない
IF関数の具体的な使用例を見ていきましょう。
例1:=IF(B11="","",B11/$F$1)
セルB11が空白であればこのセルを空白とし、セルB11が空白でなければ
セルB11の値をセル$F$1の値で割った数値を求める。
単に「=B11/$F$1」とすると、B11のセルが空白の時は「0」という数字が表示されてしまいます。0のデータばかり羅列されているような表は見づらいですよね。例1のような形で「こちらのセルが空白の場合はこのセルも空白にする」というIF関数を使用すれば見栄えがずっと良くなります。
例2:=IF(A1="","",B1/A1)
セルA1が空白であればこのセルを空白とし、セルA1が空白でなければ
セルB1の値をセルA1の値で割った数値を求める。
単に「=B1/A1」とすると、A1のセルが空白の時は「#DIV/0!」(0で割る)というエラーで表示されてしまいます。例2のように、あるセルが空白の場合はスキップ(空白で埋める)し、空白でない場合だけ処理をさせるIF関数は、「#DIV/0!」とか「#N/A!」のようなエラー表示を避けるテクニックとして頻繁に使われます。
例3:=IF(OR(A1="",A1=0),"",B1/A1)
セルA1が空白または数値0であればこのセルを空白とし、セルA1が空白でなければ
セルB1の値をセルA1の値で割った数値を求める。
例2では、セルA1が数値0であるとやはり「#DIV/0」になってしまいますので、改良してみました。
お分かりのように、IF関数の中に、OR関数(指定したいずれかの条件が真の場合に真を実行する関数)が入れ子になっています。このように関数の引数として関数を使うことをネストと言います。
例4:=IF(AND(B2>=F2,C2<=G2),"目標達成","未達成")
セルB2の値がセルF2の値より上回るか等しく、かつ、セルC2の値がセルG2より下回るか
等しい場合に「目標達成」、さもなければ「未達成」の文字をこのセルに埋める。
AND関数と組み合わせた例です。
B列:売上実績、C列:費用実績、F列:売上目標、G列:費用予算のような表をイメージして、この式を解釈してみてください(^^)
【便利知識】
AND関数の代わりに、論理積(論理演算子 *)を使うこともできます。
=IF((B2>=F2)*(C2<=G2),"目標達成","未達成")
同様に、OR関数の代わりに、論理和(論理演算子 +)を使うこともできます。
=IF((A1="")+(A1=0),"",B1/A1)
例5:=IF(B2="","",IF(B2>=60,"合格","不合格")
セルB2が空白ならば空白にして、そうでなければ、60点以上で合格、60点未満で不合格にする。
IF関数の中にIF関数をネストした例です。
OR関数は、いずれかの論理式が真ならば"TRUE"を、すべての論理式がF偽ならば"FALSE"を返します。
AND関数は、すべての論理式が真ならば"TRUE"を、いずれかの論理式が偽ならば"FALSE"を返します。
OR関数、AND関数は単独で使用した場合は、その結果が真の時"TRUE"、偽の時"FALSE"という文字が返されるのですが、通常は、上述の例3、例4のようにIF関数と組み合わせてネストの形で使用されます。
【便利知識】
上述の2例では、IF関数の引数としてOR関数、AND関数を使っていますが、逆にOR関数、AND関数の引数としてIF関数をネストすることも少なくありません。
=OR(論理式1,[論理式2]・・)
=AND(論理式1,[論理式2]・・)
例6:=IF(B11=””,””,AVARAGE(B4:B10))
セルB11が空白であればこのセルも空白とし、空白でなければ
B4からB10までのセルの値の平均値を求める。
このようにANDやOR関数に限らず、いろいろな関数をネストすることができます。
例7:=IF(B11<40,”不可”,IF(B11<60,”可”,IF(B11<80,”良”,”優”)))
IF関数はそのままでは、条件に合致した場合(真の場合)と合致しない場合(偽の場合)
の二通りしか設定できません。3つ以上の条件設定を行う場合にはIF関数の中にIF関数を
ネストすれば良いのです。
例8:=ROUNDUP(AVERAGE(A1:A5),1)
A1からA5までのセルの平均値を切り上げで小数点以下1桁を表示する
関数のネストはIF関数に限りません。このようにROUNDUP(あるいはROUNDDOWN)とAVERAGEを組み合わせるようなケースも多くあります。
ネストされている関数がさらに別の関数をネストすることもできます。
Excelではひとつの関数の中で最大7階層まで関数をネストさせることができますが、余りに階層の深い関数は本人ですらどのような処理をしているのかが解りづらくなり、後で修正する必要が生じた場合など苦労することになります。3~4階層位までに留めた方が良いでしょう。
【便利知識】
言葉で説明するのはなかなか大変なのですが、ネストが深くなることを避ける方法は比較的簡単です。
いったんある段階までの処理を別のセルで行わせ、その処理結果を本来のセルで引数として用いれば良いのです。
例9:=IF(AND(B2>=F2,C2<=G2),”目標達成”,”未達成”)
セルK2に「=AND(B2>=F2,C2<=G2)」と記述しておけば、=IF(K2=”TRUE”,”目標達成”,”未達成”)
と記述することと同じになります。