論理積関数の機能
論理積関数は、引数の条件を全て満たすときに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) | FALSE |
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」の条件を満たしており、また、C2が76と「C2≧70」の条件をみたしているので、結果trueと表示されています。
3行目を見てみます。B3が170で「B2≧165」の条件を満たしていますが、C3で66と「C2≧70」と条件を満たしていないので、論理積は条件が全て満たされていないといけない為、結果にはfalseが表示されています。
論理積関数のポイントは、試験問題中「□□かつ●●」と書かれていたら、論理積関数のことを思い浮かべつつ、さらに引数の条件を全て満たせばtrueを返し、それ以外はfalseを返す、というのがポイントになります。
論理積関数のよくあるパターン
「□□かつ●●」という文章だったら論理積を思い浮かべると言いました、論理積にも何種類かパターンがあるので紹介です。ここはさらっと見る感じで。なお、中の引数の数値は適当です。
1.論理積(B2≧165,C2≧70)
先の例に登場した、条件が2つの数値を満たすパターンです。
2.論理積(B2≧165,C2≧70,D2<260)
条件が3つの数値を満たすパターン。試験の問題文では、「セルB2の値は165以上、かつセルC2の値は70以上、かつセルD2の値は260未満」と文章で出題されます。もちろん論理積ですから3つの条件を満たさないと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関数の条件式に論理積関数を引数にすることによって、条件を満たす行には○文字が表示され、少し見やすくなりました。