Excel業務カイゼンブログ

IF関数を理解する
Excelの関数の中でも特に利用機会の多いIF関数を解説します。IF関数は、四則計算のような数字を計算するものではなく、もしも、どうだったらどうするかを決める分岐の関数といえます。「どうだったら」を判定することを、論理式、その結果のことを論理値といいます。この論理値は、書いたことが正解なのか不正解なのか2つに一つです。Excelでは正解のことを「TRUE」、不正解のことを「FALSE」と呼びます。IF関数は、1、2のいずれかを判定する場合は、「1か2のどちらか」とは考えず、「1か1以外か」と考えるというところがポイントです。IF関数は「もしも、『どこがどうなったら』、『あっている場合』、『あっていない場合』」というように暗記すると覚えやすいです。

IF関数の基本( = )
IF関数の基本は
=IF(論理式,正解の場合,不正解の場合)
となります。
論理式は、判定をする式です。基本的には、どこがどの値だったらとするので、「セル参照=希望の値」のような形になります。もしもセルB2が1なら1、そうではなければ0の値とする場合は、
=IF(B2=1,1,0)
となります。

セル参照には、セル参照だけではなく数式を設定することもできますし、希望の値にセル参照を設定することもできます。もしもセルB2がセルC2よりも1多ければ1、そうではなければ0とするのであれば、
=IF(C2+1=B2,1,0)
のようになります。
または、逆算で考えて、
=IF(C2=B2-1,1,0)
と考えることもできるでしょう。どちらも同じ動作なので、どちらを使うかは好みではありますが、後から日本語として翻訳したときにわかりやすい方の式にしましょう。

比較判定( >, <, >=, <= )
もしも、どこがどうだったらという式は「=」で判定しましたが、論理式には、指定した数字以上や未満といった設定もできます。「=」は「と同じ」という意味で使いましたが、「>」や「<」のような不等号を使うこともできます。「A > B」は、AがBより大きいという場合に使います。「A < B」は、AがBより小さい(未満)を表します。例えば、セルB2の値が1よりも大きい場合は1、そうではなければ0とするのであれば
=IF(B2>1,1,0)
のようになります。

「A > B」「A < B」は、AがBと同じ値を含む、以上、以下の場合は一致していると判定しません。以上、以下を判定する場合は、不等号と等号を並べて記述する形になります。「A >= B」は、AがB以上という場合に使います。「A <= B」は、AがB以下という場合に使います。例えば、セルB2の値が1以下の場合は1、そうではなければ0とするのであれば
=IF(B2<=1,1,0)
のようになります。
日本語では、より大きい、より小さい、未満、以下、以上のような表現がありますが、その値を含む場合は「=」を記述すること、その際、「=」は不等号の後に入れることを覚えておけば大丈夫です。どこからどこまでという『範囲』の指定をするには、後で記載しますが、この方法ではできません。1~5の範囲を表すのに
=IF(1<=B2<=5,1,0)
のような式では、計算できないことにも注意しましょう。1つの論理式の中には2つ以上の判定があってはいけません。

否定( <> )
「=」は、「だったら」という条件だったのですが、逆に「そうではない」時は不等号を向かい合わせた「<>」を使います。「A<>B」はAとBが違ったらという条件を表します。例えば、セルB2の値がセルB3と違ったら1、そうではない(同じだったら)0とするのであれば
=IF(B2<>B3,1,0)
のようになります。

この式は、
=IF(B2=B3,0,1)
と全く同じ意味です。ケースによって、日本語として「ではない」表現の方がしっくりくるのであれば「<>」を使うというような使い分けをしましょう。

文字の比較
希望の値には、数値の他に文字を使うこともできます。「=」と「<>」だけでき、不等号での比較はできません。文字との比較は、比較する文字をダブルクォーテーションで囲みます。例えば、セルB2の値が「りんご」なら1、そうでなれば0と表示する場合は、
=IF(B2="りんご",1,0)
のようになります。

文字の比較の応用でよくあるのは、空白かどうかのチェックです。ダブルクォーテーションを2つ並べると「何もない文字」とExcelは考えます。つまりこれは空白のことなのです。もしも、セルB2の値が空白ならば空白、そうではなければB2とB3を掛け合わせた値とするのであれば
=IF(B2="","",B2*B3)
となります。


IFのネスト
IF関数の応用ですが、IF関数の中にIF関数を入れることができます。もしもAだったら1、そうではなくてBだったら2、そうではなかったら3というように、どちらか2つに1つよりも多くの組み合わせが可能になります。もしもセルB2の値が1なら200、2なら500、3なら999とするのであれば
=IF(B2=1,200,IF(B2=2,500,999))
となります。

日本語では、いちいち「B2が」とは表現しませんでしたが、Excelの計算式では、すべての条件で「B2=1」「B2=2」としっかり記述しないと認識しません。この方法を応用すれば、一つのIF関数ではできなかった、どこからどこまでという『範囲』を指定することができます。セルB2の値が1~5の場合は1、そうでないときは0とする場合は、日本語の置き換えが必要で、1~5は、「1以上」「5以下」の2つの条件があることに注目します。つまり、「B2が1以上」が正しいときに、もし「B2が5以下」が正しければ1、そうでなければ0という式にします。
=IF(B2>=1,IF(B2<=5,1,0),0)
となります。

好みにもよりますが、
=IF(B2<1,0,IF(B2<=5,1,0))
という記述でも同じ意味になります。

他の関数との組み合わせ
IF関数は、空白なら空白とするという使い方が頻繁に使われますが、VLOOKUP関数とペアで使われることが非常に多いです。VLOOKUP関数は一覧表から検索する値を探し該当する行の値を求める関数ですが、検索値に何も入力していないと空白を一覧表から探してしまいます。結局見つからないのでエラーになります。これを回避するのにIF関数を使います。B2が検索値でD2からE10の範囲が一覧表です。検索値を一覧表からVLOOKUPで探し、その2列目を出したい。しかし、B2が空白ならエラーを表示させたくないという場合は
=IF(B2="","",VLOOKUP(B2,D2:E10,2,0))
という式になります。

または、エラーを独自の注意メッセージにしたほうが利用者にはわかりやすいかもしれません。
=IF(B2="","!検索値を入力してください!",VLOOKUP(B2,D2:E10,2,0))
とすればより親切でしょう。
また、応用になるのですが、D2からE10までの一覧表に名前と成績が入っていて、セルB2に入力された名前を検索すると点数が出てくるようなVLOOKUPの関数があって、点数が80点以上なら合格と表示させたい場合、論理式の中にVLOOKUP関数が入ります。
=IF(VLOOKUP(B2,D2:E10,2,0)>=80,"合格","不合格")
のようになりますし、もしもさらにB2が空白なら「名前を入力」とメッセージを表示するのであれば、少し複雑になりますが、
=IF(B2="","名前を入力",IF(VLOOKUP(B2,D2:E10,2,0)>=80,"合格","不合格"))
となります。


まとめ
IF関数の基本を「~だったら」というその値そのものの比較、「~以上だったら」のような以上、以下のような比較、「~ではない」のような否定の比較、文字との比較を紹介しました。また、IF関数の中にIF関数が入るという使い方、IF関数と他の関数との組み合わせの方法も紹介しました。IF関数は様々なケースでいろいろな使い方ができますし、応用範囲もとても広い関数です。たくさんの条件を考えるとわかりにくくなるのですが、IF関数自体は「どこがどうだったらどうする、そうではなかったらどうする」という単純な日本語で表現できますので、いかにやりたいことをその日本語に置き換えられるかがポイントになってきます。IF関数の論理式に使う便利な関数は、AND関数(なおかつの関数)、OR関数(またはの関数)、NOT関数(ではないの関数)があります。これらの関数と組み合わせることでより複雑な論理式を作成することができます。特に使用頻度が高い空白の判定は、公式として「IF(どこが="","",」と暗記していてもよいかもしれません。

Forguncyをもっとよく知る
各業種や用途別にForguncyを活用して、成功した事例や使い方のご紹介します。