否定関数の機能
否定関数は、引数の条件を満たさないときにtrueを返し、満たす時はfalseを返す関数です。
論理積関数や論理和関数は満たすときにtrueを返していましたが、否定関数は満たさないときにtrueを返す関数になります。逆になっています。
否定関数は今までの何かを計算した結果を返すような機能の関数ではなく、trueかfalseのみを返すだけです。なので否定関数は単独で使われることはほとんどなく、使われ方としては、IF関数の論理式の中で否定はよく使用されます。
また、関連として論理積関数と論理和関数もまとめて覚えると楽なので、目を通しておいて下さい。
否定関数の書式
否定の引数は1つしか指定できません。
否定関数の実行例
A | B | C | D | E | |
1 | 番号 | 身長 | 否定関数文字列 | 結果 | |
---|---|---|---|---|---|
2 | 1 | 166 | 否定(B2≧165) | FALSE | |
3 | 2 | 170 | 否定(B3≧165) | FALSE | |
4 | 3 | 180 | 否定(B4≧165) | FALSE | |
5 | 4 | 157 | 否定(B5≧165) | TRUE | |
6 | 5 | 151 | 否定(B6≧165) | TRUE | |
7 | 6 | 176 | 否定(B7≧165) | FALSE | |
8 | |||||
9 |
A列とB列に数値、C列に関数の文字列、D列に否定関数の結果があるとします。この表の内容は、身長165以上ではない行をこの表から探したいとします。混乱するのであまりいいませんが、「~ではない」と否定した条件なので、165未満がtrueということになります。
まず情報処理技術者試験での否定関数の問題文についてです。否定関数の文章題では「条件~ではない」のよう言われます。「ではない」と言われたら否定関数のことだと覚えておいて下さい。
つぎは否定を図示してみます。
これはベン図といいます。ベン図の見方は、円の中がB2≧165を満たす人の集まりです。否定なので円の集まり以外の外側のところが対象になります。否定関数では色が塗られているところはtrueで返し、それ以外の円の外のところはfalseで返す関数になります。
2行目ではB2が166と「B2≧165」の条件を満たしていますが、否定の関数は条件を満たさないものがtrueになるので、この場合はfalseになります。
4行目を見てみます。B5が157で「B2≧165」の条件を満たしていませんが、否定の関数は条件を満たさないものをtrueとするので、結果にはtrueが表示されています。
否定関数のポイントは、試験問題中「□□ではない」と書かれていたら、否定関数のことを思い浮かべつつ、さらに引数の条件を満たせばfalseを返し、全て満たさなければtrueを返す、というのがポイントになります。
IF関数との組み合わせ
ここは情報処理技術者試験(表計算)とはあまり関係ないので、時間がない方は読み飛ばしてください。
否定関数はtrueとfalseの論理値しか返してこないので、少し使い勝手が悪いです。先の実行例でも結果を表示するD列では、結果がtrueとfalseで表示されていました。
この状態でも分かる人にはわかるので、trueとfalse表示のそのままでもいいのですが、やはりもう少し他の人が見ても分かるようにしたいところです。具体的には、trueのときは○を表示し、falseのときは何も表示しないようにすると、見やすいのではないでしょうか。ということで、先の実行例を少し見やすくするために修正をしてみます。使う関数はIF関数です。IF関数についてはこちらを読んでください。
IF関数の書式のところで、第1引数は論理式を指定しなければいけませんでした。論理式は具体的にはtrueとfalseの論理値を返す値のことでした。
そして、否定関数は論理値を返す関数です。なのでIF関数の第1引数に否定関数を引数に指定することができます。
このことを踏まえて修正してみるとこのようになります。
A | B | C | D | E | |
1 | 番号 | 身長 | 否定関数文字列 | 結果 | |
---|---|---|---|---|---|
2 | 1 | 166 | IF(否定(B2≧165),'○','') | ||
3 | 2 | 170 | IF(否定(B3≧165),'○','') | ||
4 | 3 | 180 | IF(否定(B4≧165),'○','') | ||
5 | 4 | 157 | IF(否定(B5≧165),'○','') | ○ | |
6 | 5 | 151 | IF(否定(B6≧165),'○','') | ○ | |
7 | 6 | 176 | IF(否定(B7≧165),'○','') | ||
8 | |||||
9 |
身長の値は同じです。2行目を見てみます。否定の条件の部分は変わらず「否定(B2≧165)」となり、否定の条件をそのままIF関数の条件の論理式としています。
そしてtrueの場合は文字列「'○'」を返し、falseの場合は空白「''」を返すように引数を変更します。
IF関数の引数で分けてみると、
引数1:否定(B2≧165,C2≧70) 否定関数の論理式
引数2:'○' 否定関数の条件を満たすときに計算する値
引数3:'' 否定関数の条件を満たさないときに計算する値
こうしてIF関数の条件式に否定関数を引数にすることによって、条件を満たす行には○文字が表示され、少し見やすくなりました。