論理和関数の機能
論理和関数は、引数の条件をひとつでも満たすときにtrueを返し、それ以外の時はfalseを返す関数です。
論理和関数は今までの何かを計算した結果を返すような機能の関数ではなく、trueかfalseのみを返すだけです。なので論理和関数は単独で使われることはほとんどなく、使われ方としては、IF関数の論理式の中で論理和はよく使用されます。
また、関連として論理積関数と否定関数もまとめて覚えると楽なので、目を通しておいて下さい。
論理和関数の書式
論理和の引数は、カッコの中に論理式をカンマ「,」で区切りながら、引数を渡します。引数は最低1つ以上なければいけなく、また上限はありません。
論理和関数の実行例
A | B | C | D | E | |
1 | 番号 | 身長 | 体重 | 論理和関数文字列 | 結果 |
---|---|---|---|---|---|
2 | 1 | 166 | 76 | 論理和(B2≧165,C2≧70) | TRUE |
3 | 2 | 170 | 66 | 論理和(B3≧165,C3≧70) | TRUE |
4 | 3 | 180 | 80 | 論理和(B4≧165,C4≧70) | TRUE |
5 | 4 | 157 | 58 | 論理和(B5≧165,C5≧70) | FALSE |
6 | 5 | 151 | 63 | 論理和(B6≧165,C6≧70) | FALSE |
7 | 6 | 176 | 71 | 論理和(B7≧165,C7≧70) | TRUE |
8 | |||||
9 |
A列とB列とC列に数値、D列に関数の文字列、E列に論理和関数の結果があるとします。論理和関数の内容は、身長165以上または体重70以上の行をこの表から探したいとします。
条件式が2つあるので、IF関数を使用して探すことも可能ですが、論理和関数でも探すことができるのでやってみます。
まず情報処理技術者試験での論理和関数の問題文についてです。論理和関数の文章題では「条件1または条件2」のように「または」と前後で文章をつなぐ書き方をします。「□□または●●」と言われたら論理和関数のことだと覚えておいて下さい。
つぎは論理和を図示してみます。
これはベン図といいます。ベン図の見方は、左円の中がB2≧165を満たす人の集まりで、右円の中がC2≧70の条件を満たす人の集まりで、円と円が重なる、2つの条件を満たす人がいるわけですが、論理和は「条件1または条件2」なので、円が重なっていてもいなくても、円全体が条件を満たすところになります。論理和関数では色がついているところはtrueで返し、それ以外の円の外のところはfalseで返す関数になります。
2行目ではB2が166と「B2≧165」の条件を満たしているのでtrueで、またC2が76と「C2≧70」の条件をみたしているので結果trueと、どちらにしてもtrueが表示されています。
3行目を見てみます。B3が170で「B2≧165」の条件を満たしていて、C3で66と「C2≧70」と条件を満たしていませんが、論理和は条件のいずれかが満たされていればいいため、結果にはtrueが表示されています。
論理和関数のポイントは、試験問題中「□□または●●」と書かれていたら、論理和関数のことを思い浮かべつつ、さらに引数の条件を1つでも満たせばtrueを返し、全て満たさなければfalseを返す、というのがポイントになります。
論理和関数のよくあるパターン
「□□または●●」という文章だったら論理和を思い浮かべると言いました、論理和にも何種類かパターンがあるので紹介です。ここはさらっと見る感じで。なお、中の引数の数値は適当です。
1.論理和(B2≧165,C2≧70)
先の例に登場した、条件が2つの数値を満たすパターンです。
2.論理和(B2≧165,C2≧70,D2<260)
条件が3つの数値を満たすパターン。試験の問題文では、「セルB2の値は165以上、またはセルC2の値は70以上、またはセルD2の値は260未満」と文章で出題されます。もちろん論理和ですから3つの条件のうちいずれか1つでも満たせばtrueになります。
3.論理和(B3='合格',C3≧70)
条件に文字列が使われるパターン。こういうのもあります。合格の文字列が一致するか、またはC3が70以上を満たすか、両方を満たすかをすればtrueになります。
IF関数との組み合わせ
ここは情報処理技術者試験(表計算)とはあまり関係ないので、時間がない方は読み飛ばしてください。
論理和関数はtrueとfalseの論理値しか返してこないので、少し使い勝手が悪いです。先の実行例でも結果を表示するE列では、結果がtrueとfalseで表示されていました。
この状態でも分かる人にはわかるので、trueとfalse表示のそのままでもいいのですが、やはりもう少し他の人が見ても分かるようにしたいところです。具体的には、trueのときは○を表示し、falseのときは何も表示しないようにすると、見やすいのではないでしょうか。ということで、先の実行例を少し見やすくするために修正をしてみます。使う関数はIF関数です。IF関数についてはこちらを読んでください。
IF関数の書式のところで、第1引数は論理式を指定しなければいけませんでした。論理式は具体的にはtrueとfalseの論理値を返す値のことでした。
また、論理和関数は論理値を返す関数です。なのでIF関数の第1引数に論理和関数を引数に指定することができます。
このことを踏まえて修正してみるとこのようになります。
A | B | C | D | E | |
1 | 番号 | 身長 | 体重 | 論理和関数文字列 | 結果 |
---|---|---|---|---|---|
2 | 1 | 166 | 76 | IF(論理和(B2≧165,C2≧70),'○','') | ○ |
3 | 2 | 170 | 66 | IF(論理和(B3≧165,C3≧70),'○','') | ○ |
4 | 3 | 180 | 80 | IF(論理和(B4≧165,C4≧70),'○','') | ○ |
5 | 4 | 157 | 58 | IF(論理和(B5≧165,C5≧70),'○','') | |
6 | 5 | 151 | 63 | IF(論理和(B6≧165,C6≧70),'○','') | |
7 | 6 | 176 | 71 | IF(論理和(B7≧165,C7≧70),'○','') | ○ |
8 | |||||
9 |
身長・体重の値は同じです。2行目を見てみます。論理和の条件の部分は変わらず「論理和(B2≧165,C2≧70)」となり、論理和の条件をそのままIF関数の条件の論理式としています。
そしてtrueの場合は文字列「'○'」を返し、falseの場合は空白「''」を返すように引数を変更します。
IF関数の引数で分けてみると、
引数1:論理和(B2≧165,C2≧70) 論理和関数の論理式
引数2:'○' 論理和関数の条件を満たすときに計算する値
引数3:'' 論理和関数の条件を満たさないときに計算する値
こうしてIF関数の条件式に論理和関数を引数にすることによって、条件を満たす行には○文字が表示され、少し見やすくなりました。