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),"","要チェック")
以上、頭の体操でした。
この内容は「ちょっとしたトリビア」レベルの話で、覚える必要性はかなり低いです。世間話のネタ程度にご使用ください!
ディスカッション
コメント一覧
まだ、コメントがありません