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

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

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

※「単純に式の作り方を知りたい!」という方はIF関数の基礎として、こちら『 IF関数の使い方(基礎編) 』をご参照いただくか、『IF関数入門(OR条件編)』でOR条件の記述方法をご確認ください。

そもそもOR関数とは何か

OR関数の正体

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

OR関数は、「組み込まれた論理式の内、最低1つが満たされる場合は"TRUE"、全てが満たさない場合は"FALSE"と表示する関数」です。

実例を見た方が分かり易いと思いますので、OR条件編で使用した表にて、単純にOR関数を入力してみましょう。

上図のように、単なるOR関数に『70点以上』『全国出場歴あり』『高校日本代表が在籍』という3つの論理式(条件)を記入すると、条件を1つ以上満たす場合は"TRUE"、1つも満たさない場合は"FALSE"と表示されます。

真理値"TRUE"と"FALSE"

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

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

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

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

上記した仕組みを踏まえて、IF関数内にOR関数が組み込まれたケースを考えてみましょう。

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

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

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

蛇足:IF+OR関数はIF+AND関数でも表現できる

ここからは蛇足の内容で、ただの頭の体操です。

実は、IF関数+OR関数の数式は、IF関数+AND関数に置き換えることが可能です。

※AND関数の作り方についてはこちらの「IF関数入門(AND条件編)」を参考にしてください。

ベン図で考えてみる

まず、IF関数+OR関数で真となる範囲、偽となる範囲をベン図で確認しましょう。(※ベン図とは、下記のように論理式を円で表した図のことです)

3つの条件を3つの円で表現しています。OR関数は複数の条件の最低1つを満たせば真となりますから、赤線枠内が「OR関数の真のエリア」です。

さて、注目して欲しいのは赤線の部分、つまりOR関数で「偽/FALSE」と判定される範囲です。3つの条件を1つも満たさない学校がこの赤線外の範囲にいます。

では、3つの条件を1つも満たさない学校って、具体的にどんな学校でしょうか。

それは、①’戦力70点未満、②’全国出場経験ナシ、③’高校日本代表選手なし、を全てを満たす学校です。

察しのよい方は気付いたと思いますが、「全てを満たす」と出てきました。つまり赤線枠外の範囲はAND関数で指定できるのです。

OR関数内の論理式①~③を個々に全てひっくり返して論理式①’~③’を生成する。その上で、①’~③’をAND条件の論理式に組み込むと、OR関数の偽の範囲を指定できる。ということなのです。

OR関数の論理式を裏返してAND関数に入れる+真偽を入れ替える

上記したことをまとめると、次の通りです。

OR関数の論理式を全てひっくり返し、AND条件で連結する。そうすると、元のOR関数と真・偽の範囲が実質的に入れ替わる

具体例で考えてみましょう。

上記のように、OR関数による真偽分類は、論理式をひっくり返すこと+AND関数を使用することで、実質的に代替可能なのです。

ややこしいですよね。高校数学の論理問題に似ているので、若い学生の方が、直感的に理解しやすい内容かもしれません。

実験してみよう

では、実際にやってみましょう! 事例は先ほどまでと同じです。

E列には、IF関数+OR関数で作った数式を入れています。

そしてF列には、同じ結果になるようにIF関数+AND関数で作った数式を入れました。

IF+OR関数とIF+AND関数で、論理式は以下の通り全てを反対にしています。

「B列が70点以上」「B列が70点未満」
「C列が"あり"」「C列が"なし"」
「D列が1人以上」「D列が1未満」

その上で、真の場合・偽の場合を入れ替えています。ではこれをコピーしてみましょう。

どちらでも結果は同じになりました!

このように、IF+OR関数の数式は、IF+AND関数に置き換えられるのです。

式サンプル

①IF関数とOR関数併用
=IF(OR(B2>=70,C2="あり",D2>=1),"要チェック","")

②IF関数とAND関数併用
=IF(AND(B2<70,C2="なし",D2<1),"","要チェック")

以上、頭の体操でした。

この内容は「ちょっとしたトリビア」レベルの話で、覚える必要性はかなり低いです。世間話のネタ程度にご使用ください!