初心者にとってはよくわからない存在、論理式と論理値。
等号・不等号を使い、2つの値を比較するのが論理式。
その論理式に対してのコンピュータの返答が論理値です。
論理値には、TRUE・FALSEの 2つの種類しかありません。
エクセルで論理式がもっとも活用されるのはIF関数でしょう。
しかしIF関数以外にも多くの場面で論理値の概念を利用することができます。
論理式・論理値を理解すると、一段レベルアップした数式が組めます。
論理式・論理値とは?
論理式
等号 ( = )、不等号 ( < > ) を使って、二つの値を比較する式が論理式です。
記号 | 意味 | 論理式の例 | 例の意味 |
= | 等しい | A=B | AはBと等しい |
> | より大きい | A>B | AはBより大きい |
< | より小さい | A<B | AはBより小さい |
>= | 以上 | A>=B | AはB以上 |
<= | 以下 | A<=B | AはB以下 |
<> | 等しくない | A<>B | AとBは等しくない |
論理値
論理式に対してコンピュータは
- 正しい (英語でTRUE)
- 正しくない (英語でFALSE)
のどちらかの判定をします。
この「TRUE」「FALSE」の2つを論理値と言います。
数式内で論理式をあつかう
「式」という名の通り、論理式は数式内で扱うことが可能です。
通常の数式は、セルに計算結果が表示されます。
おなじように、論理式でセルに表示されるのは論理値です。
論理値は中央揃えで表示されます。
エクセルでの論理式・論理値の使用
IF関数
エクセルで論理式といえば、まっ先に思い出すのは IF関数でしょう。
IF(論理式, [値が真の場合], [値が偽の場合]
第1引数の論理式が TRUEなら第2引数が、
FALSEなら第3引数が戻り値として返されます。
各種ダイアログ
ダイアログなどで論理式が使われることもあります。
「条件付き書式」の「数式を使用して、書式設定するセルを決定」
「データの入力規則」の「ユーザー設定」
論理値の計算
コンピュータは計算機なので、「論理」も値として計算するしかありません。
しかもすべてのデータを、最終的には1と0という2進法のデータとして扱います。
「TRUE」「FALSE」という論理値も、実はそれぞれ1,0という数値として計算できます。
TRUE は 1
FALSE は 0 として計算できる
IF関数の引数
IF関数の引数を例にして、論理値の計算を検証してみましょう。
B2セルに IF関数が入力してあります。
第1引数「A1=10」が TRUEなら「〇」、FALSEなら「×」が表示されます。
では、第1引数に直接「TRUE」と入力したらどうなるでしょう。
「TRUE」の場合の「〇」しか表示されない IF関数になります。
第1引数が「FALSE」なら
「FALSE」の場合の「×」しか表示されません。
「TRUE」は1、「FALSE」は0として計算される、と前述しました。
1は TRUEと入力したのと同じになります。
「3-2」のように数式にしても同じです。
IFS関数 (Excel 2016以降) では、複数の論理式を設定できます。
最後の論理式の部分に入力されるのは「TRUE」です。
IFS関数は左側の論理式から順に判定されていきます。
そのため、最後の「TRUE」は “それ以外すべての場合” という意味になります。
論理演算
論理値は1,0という数値に変換して計算できると説明しました。
つまり、2つの論理値を数式のように計算することもできます。
これが「論理演算」です。
「論理演算」のなかでも、エクセルでよく使う「論理積」と「論理和」について説明します。
論理積
2つの論理値のかけ算の組み合わせを考えてみましょう。(積とはかけ算の答えのことです)
論理値 X 論理値 | 数字に変換 | 計算結果 | 結果を論理値に再変換 |
TRUE X TRUE | 1 X 1 | 1 | TRUE |
TRUE X FALSE | 1 X 0 | 0 | FALSE |
FALSE X TRUE | 0 X 1 | 0 | FALSE |
FALSE X FALSE | 0 X 0 | 0 | FALSE |
「2つの論理値をかけ算」すると、
- 2つとも「TRUE」のとき、結果も「TRUE」
- それ以外すべて、結果は「FALSE」
となります。
使用例
「A列の数字が 10以上」かつ、「B列の文字が “A”」のときだけ「〇」、それ以外は「×」を表示したい。
IF関数の論理式に、2つの論理式のかけ算を入力します。
このように2つの論理式のかけ算は、「[○○は△△]かつ[□□は××]の場合は…」という1つの論理式になります。
これは AND関数とまったく同じはたらきです。
どちらを使ってもいいですが、* での入力もよく使われるので「意味」が分かるようにしておきましょう。
論理和
2つの論理値のたし算の組み合わせを考えてみましょう。(和とはたし算の答えのことです)
論理値 + 論理値 | 数字に変換 | 計算結果 | 結果を論理値に再変換 |
TRUE + TRUE | 1 + 1 | 2 | TRUE |
TRUE + FALSE | 1 + 0 | 1 | TRUE |
FALSE + TRUE | 0 + 1 | 1 | TRUE |
FALSE + FALSE | 0 + 0 | 0 | FALSE |
「TRUE + TRUE」の「計算結果」2を「TRUE」としていますが、
実は0以外の数値はすべて「TRUE」と認識されます。
逆に「TRUE」を計算式に用いるときは1と認識されます。
「2つの論理値をたし算」した結果は、
- 2つとも「FALSE」のとき、結果も「FALSE」
- それ以外すべて、結果は「TRUE」
これは言葉でいうと、「[○○は△△]または[□□は××]の場合は…」という意味です。
使用例
「A列の数字が 10以上」または、「B列の文字が “A”」のときは「〇」、それ以外は「×」を表示したい。
これは OR関数と同じはたらきです。
その他の応用
「TRUE」を1、「FALSE」を0として計算すれば、さまざまな数式に応用できます。
あるテーマパークの入園料の計算表です。
- 基本料金は \8,000
- 年齢が15才以下の場合、「子供割引」としてマイナス \3,000
- 来園日が土、日以外なら「平日割引」としてマイナス \1,500
とします。
A2セルの「来園日」、B2セルの「年齢」に応じて、C2セルに料金を表示する数式を入力。
論理式「B2<=15」は年齢が15才以下かを判断する論理式です。
論理式「WEEKDAY(A2,2)<6」で来園日が平日かどうかを判断します。
「WEEKDAY(A2,2)」は A2セルのシリアル値を、「月曜日は1~日曜日は7」という数値で返す関数です。
この例の場合、論理式1は「TRUE」論理式2は「FALSE」になります。(2024/6/1は土曜日のため)
C2セルには、論理式1を1、論理式2を0として計算した料金が表示されます。
SUM関数と論理値
「TRUE」は1、「FALSE」は0として計算できる、といいました。
しかし SUM関数の引数に論理値を入れるときは注意が必要です。
SUM関数の引数に論理値を入れると、0として計算されます。
ただし、いったん数値で演算した論理値は、数値として計算されます。
まとめ
ポイントは
TRUE は 1
FALSE は 0 として計算できる
の部分です。
これさえ理解すれば、論理値を数式内で活用することもできます。
また、
- ( 論理式1 ) * ( 論理式2 ) は、 ( ~ ) かつ ( ~ )
- ( 論理式1 ) + ( 論理式2 ) は、 ( ~ ) または ( ~ )
という表記は慣れておきましょう。
そうしないと、この数式をみたときに理解不能になります。