IF関数とAND関数のメカニズム

2020年4月3日

IF関数とAND関数を併用して「複数の条件をすべて満たす場合」を指定する方法について、本記事でメカニズムを解説します。

色々な関数を組み合わせて使えるようになるには、関数の構造を理解することが必要です。本記事でIF関数・AND関数の構造やメカニズムを理解しましょう!

※「単純に式の作り方を知りたい!」という方は、こちら『 IF関数の使い方(基礎編) 』、あるいは『IF関数入門(AND条件編)』ご参照ください。

そもそもAND関数とは何か

AND関数の正体

まず、AND関数そのものの正体について説明します。

AND関数は、「組み込まれた論理式全てを満たす場合は"TRUE"、1つでも満たさない場合は"FALSE"と表示する関数」です。

具体例を見た方が早いと思いますので、以下をご覧ください。

上図のように、単なるAND関数に『男性』『20歳以上』という2つの論理式(条件)を記入すると、2つの条件を満たす場合は"TRUE"、両方あるいはどちらかを満たさない場合は"FALSE"と表示されます。

真理値"TRUE"と"FALSE"

表示された"TRUE"と"FALSE"は真理値(論理値)と言われるもので、何らかの命題の真偽を表す表記法です。

簡単に言ってしまえば、「その条件に合致しているよ!」というのが"TRUE"で、「条件に合致していない!間違ってるよ!」というのが"FALSE"です。

つまり、AND関数とは、「記入された複数の条件を全部満たしているか判定して、TRUEかFALSEで回答するぞ!」という関数なのです。

IF関数内にAND関数が組み込まれた場合のメカニズム

上記した仕組みを踏まえて、AND関数をIF関数に組み込んだケースを考えてみましょう。

先に、AND関数が記入された複数の論理式を判定し、「これはTRUE(真)だよ!」とか「これはFALSE(偽)です!」とIF関数に伝達します。

その後、IF関数はAND関数から貰った情報によって、「TRUEってことは真の値を実行だ!」「FALSEだから偽を実行するぞ!」と判定・処理を行っているのです。

これがIF関数とAND関数を併記した場合のメカニズムです。

蛇足:実はIF関数だけでも実現可能

IF関数だけで実現することが可能

AND関数を使わずにIF関数だけで実装することも実は可能です。

それはIF関数の中にIF関数を重ねていく方法です。分かり易いのは「真の場合」の中に、さらにIF関数を組み込むことで、複数条件が全て真になるような条件を作り出すやり方ですね。

その場合の式は以下の通りです。

IF関数の中にIF関数を入れる

=IF(論理式A,IF(論理式B,真の場合,偽の場合),偽の場合)

これはIF関数Aの『値が真の場合』に、さらにIF関数Bを入れています。構造イメージは以下の通りです。

意味が分からないと思う方は、下のフローチャートで考えた方が分かり易いかもしれません。こちらも参考にしてください。

こういった構造であるため、「値が真の場合②」は、論理式A,B共に満たした場合にのみ、実行されるのです。

実験例

では、IF関数とAND関数で記入しても、IF関数を複数個記入しても、結果が同じになるか実験してみましょう。

今回は何らかの会員名簿で、『男性』で『20歳以上』の会員に、『日本酒送付』と表示されるように関数を作ります。

上図のように、D列にはIF関数とAND関数の併用方式で、E列にはIF関数を重ねる方式で入力します。

では結果を見てみましょう。数式を下までコピーします。

結果は同じですね。男性で20歳以上なのは十文字さんだけで、彼の欄のみ『日本酒送付』となりました。

このように、IF関数を複数個重ねることで、AND関数と実質的に同じ機能を実現することが可能です。

式サンプル

①IF関数とAND関数併用
=IF(AND(B2="男",C2>=20),"日本酒送付","なし")

②IF関数を2個重ねる
=IF(B2="男",IF(C2>=20,"日本酒送付","なし"),"なし")

IFが多すぎると分かりにくいので注意

ただし、IFを重ねていく方式は、論理式が増えると見辛いという問題点があります。例えばIFを5つくらい重ねると下のようになります。

=IF(B2="男",IF(C2>=20,IF(D2="東京",IF(E2>=5,IF(F2="有料会員","日本酒送付","なし"),"なし"),"なし"),"なし"),"なし")

作った本人以外が、これを解読しようとすると一苦労です。

そのため、「全ての条件を満たすケースと、そうでないケースで2分割したい」という場合は、IF関数とAND関数を併用して下のようにした方がスッキリします。

=IF(AND(B2="男",C2>=20,D2="東京",E2>=5,F2="有料会員"),"日本酒送付","なし")

自分だけが使うエクセルファイルなら、どちらの方式で作っても構いません。

ただし、他人が見たり編集したりするエクセルファイルならば、「IF関数だけで作れるから、AND関数なんて不要だ!」と考えずに、IF関数+AND関数併用で分かり易く書くのがベターです!