Excel業務カイゼンブログ

見出しの装飾

IF関数と組み合わせて使うAND関数、OR関数、NOT関数

IF関数は、ある条件にあてはまった場合にどのような結果を出すかを表す関数で、IF関数の中にIF関数を入れ込んでどんどん繋げていくことで複雑な式を組み立てることができます。しかし、複雑な式は間違いの元ですし、あとで見直したときにどんな目的で作成したか解読できないような式になってしまい、変更したいときなど大変です。そのような時に使うのが、論理関数とよばれる3つの関数です。

「1~5の範囲」という日本語は、「1以上で『なおかつ』5以下」という日本語で表現できますが、Excelはこのような「なおかつ」「または」「~ではない」という表現方法で解釈してくれるのです。

「男性か20歳以上」という日本語は「男性『または』20歳以上」と表現します。
「空席がある」は「座席数○○席で満席『ではない』」と表現します。

このようにIFの条件は日本語として置き換えることでExcelの関数としてより解釈しやすくなります。Excelの関数では「なおかつ」はAND関数、「または」はOR関数、「~ではない」はNOT関数です。論理関数は、IF関数と組み合わせて利用します。

見出しの装飾

AND関数(なおかつ)

AND関数は「なおかつ」を表します。日本語では「~で~なら」と読み替えることができればAND関数です。

AND(条件1,条件2,条件3,…)

条件はいくつでも入れることができます。すべての条件が成立した場合のみ正解とします。IF関数と組み合わせて、もしもB1が1以上でなおかつ5以下なら1、そうではなければ0とする場合は

=IF(AND(B1>=1,B1<=5),1,0)
となります。

AND関数

B1が1であること、B1が5であることというように「どこがどうか」ということはすべて具体的に書くのがポイントです。
IF関数だけで同じ意味の計算式を作ると

=IF(B1>=1,IF(B1<=5,1,0),0)

となりますが、IF関数の「条件式が成立しないとき」の結果0が2回出てくるなど、日本語として理解しにくくなっています。
複雑なIF関数はAND関数などの論理関数を使うと計算式がわかりやすくなります。

見出しの装飾

OR関数(または)

OR関数は「または」を表します。日本語では「~か~なら」と読み替えることができればOR関数です。

OR(条件1,条件2,条件3,…)

AND関数と同様に条件はいくつでも入れることができます。ANDと違いどれかの条件が成立すれば正解とします。IF関数と組み合わせて、もしもB1が男性、またはC1が20以上なら該当者、そうではなければ該当せずとする場合は

=IF(OR(B1="男性",B2>=20),"該当者","該当せず")

となります。

セルの書式設定

論理関数では、条件の対象がセルB1が男性、セルB2が20以上のように2つのセルの値を同時に比較することもでき応用が利きます。このOR関数も、IF関数だけで計算式を作ることができ、

=IF(B1="男性",1,IF (B2>=20,1,0))

となりますが、やはり1という結果が2回出てくるので、日本語として理解しにくくなっています。

OR関数

NOT関数(~ではない)

「~ではない」はIF関数で条件式を判定する時に「<>」を使えばよいと考えますが、AND関数やOR関数と組み合わせると「<>」では考えにくい時があります。

例えば、OR条件で出したB1が男性、またはC1が20以上を「該当者としない」場合には、条件を逆にしなければなりません。そのときに使うのがNOT関数です。
ORの条件全体に「~ではない」と考えますので、OR関数の括弧を含めたところをNOT関数で囲みます。

NOT(OR(B1="男性",B2>=20))

のようになります。つまり、もしもB1が男性、またはC1が20以上でなければ該当者、そうではなければ該当せずとする場合は

=IF(NOT(OR(B1="男性",B2>=20)),"該当者","該当せず")
となります。

NOT関数

もしもB1が1以上でなおかつ5以下ではなければ1、そうではなければ0とする場合は

=IF(NOT(AND(B1>=1,B1<=5)),1,0)

となります。NOT関数は、条件を逆にするだけなので、

=IF(NOT(OR(B1="男性",B2>=20)),"該当者","該当せず")

は、NOT関数を使わない

=IF(OR(B1="男性",B2>=20) ,"該当せず","該当者")

と同じ動作ですが、
「もしもB1が男性、またはC1が20以上でなければ該当者、そうではなければ該当せず」
ではなく、
「もしもB1が男性、またはC1が20以上ならば該当せず、そうではなければ該当者」
という日本語の意味になります。根本は同じなのですが、日本語が解釈しにくくなったり、どちらが好みかにもよりますので、ご自身で見て、わかりやすい方をチョイスしましょう。

OR関数

AND関数とOR関数の結果が同じになる計算式

AND関数を使えばいいのかOR関数を使えばいいのかわからなくなるケースも多くあります。実は、一部のケースでは、同じ動作をする計算式をAND関数とOR関数どちらでも作ることができます。
「もしもセルA1が1でなおかつA2も1ならば1そうではなければ0」の計算式は

=IF(AND(A1=1、A2=1),1,0)

となります。
「もしもセルA1が1ではないか、A2が1ではなければ0そうでなければ1」の計算式は

=IF(OR(A1<>1、A2<>1),0,1)

となります。
どちらの動作も「セルA1かA2のどちらも1なら1、そうではないときはすべて0」になります。
やりたいことを後で見てわかるような日本語に翻訳できればいいのですが、翻訳することができない計算式もあります。そのような時は、2つの正解のうちどちらを使うかの選択で迷うかもしれませんが、翻訳できない時はどちらでも正解です。

OR関数

まとめ

AND関数とOR関数に入る条件は、いくつでも大丈夫ですが、見やすさや間違いを防ぐ意味でも最大5つ、できれば3つまでと考えるとよいと思います。もし、それで足りなければ、いったん途中経過をセルに計算して、その値を使ってさらに論理関数で計算するいうようにしたほうがよいでしょう。
また、なにがなんでも論理関数にせずに、よく考えたら合計値や平均値で判断できるなどといったこともあります。複雑になる前に計算方法を整理しましょう。例えば、このような忘れ物チェック表で考えてみましょう。

実例
「アイテム5つのチェックがすべて〇になったら」という条件だと、

=IF(AND(C3="〇",C4="〇",C5="〇",C6="〇",C7="〇"),"OK","忘れ物あり!")

となりますが、しかし、よく考えると、「〇が5つなら」という条件とも言え、COUNTIF関数を組み合わせることで

=IF(COUNTIF(C3:C7,"〇")=5,"OK","忘れ物あり!")

のようにも考えることができ、よりシンプルな式となります。もし仮に「どれか一つなら」という条件ならOR関数を使わずに

=IF(COUNTIF(C3:C7,"〇")>=1,"OK","忘れ物あり!")

のように考えればよいでしょう。最後に、論理関数の使い分けを日本語で分類しますので参考にしてください。

AND関数は、
「すべての条件が成立していたら」
「~で~」
「~なおかつ~」

のような日本語で表現できる場合です。

OR関数は、
「どれかの条件が成立していたら」
「~か~」
「~または~」

のような日本語で表現できる場合です。

NOT関数は、逆転の関数です。

見出しの装飾

Forguncyをもっとよく知る

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