【8】VBAの演算子「論理演算子」について

記事で紹介しているエクセル
・エクセル2019 [64ビット版]

目次

「論理演算子(ろんりえんざんし)」とは?

今回は「論理演算子」について解説いたします。

前回は「比較演算子」について学びました。

比較演算子は、データの値と値を比較して「True」と「False」で真偽を判定しました。

しかし比較演算子だけでは、例えば『「変数Aが変数Bより大きい」かつ「変数Cは変数Aと同じ値」』という比較ができません。

または『「変数Aが変数Bより大きい」もしくは「変数Cは変数Aと同じ値」』という比較もできません。

つまり、複数の条件が存在した時、比較演算子だけでは不可能です。

そこで登場するのが「論理演算子」です。

論理演算子を使えば、複数の条件を組み合わせて判定する事が可能です。

論理演算子は全部で6つあります。

比較演算子の時は算数のようでしたが、論理演算子は数学的な要素が含まれています。

算数や数学が苦手な人は、プログラムは難しいと思うかもしれませんが、1つ1つ分かりやすい所からマスターしていけば難しくありません。

よって6つある論理演算子の内、基本的な3つを解説いたします。

今回もソースコードを使って解説します。

Sub test7()
    
    'Boolean型による変数宣言
    Dim Answer1 As Boolean
    Dim Answer2 As Boolean
    Dim Answer3 As Boolean
    Dim Answer4 As Boolean
    
    Dim A As Integer
    Dim B As Integer
    Dim C As Integer
    
    A = 5
    B = 10
    C = 5
    
    Answer1 = (A > B) And (A = C) '「条件式1 かつ 条件式2」両方が真か?
    Answer2 = (A > B) Or (A = C) '「条件式1 もしくは 条件式2」どちらかが真か?
    Answer3 = Not (A = B) '条件式の否定
    Answer4 = Not (A = C) '条件式の否定

    MsgBox (Answer1) 'False
    MsgBox (Answer2) 'True
    MsgBox (Answer3) 'True
    MsgBox (Answer4) 'False
    
End Sub

論理演算子「And」:論理積(かつ)

Answer1 = (A > B) And (A = C) '「条件式1 かつ 条件式2」両方が真か?

まず2つの比較演算子を使った条件式があります。

それが「(A > B)」と「(A = C)」です。

そして「And」アンドが論理演算子になります。

この「And」は論理積と呼ばれ、「And」で比較する両方の条件式の真偽を比較し、共に真なら「True」になります。

もう少しひも解いてみましょう。

まず変数Aは「5」変数Bは「10」変数Cは「5」です。

最初の条件式「(A > B)」は偽(False)です。

次の条件式「(A = C)」は真(True)です。

つまり「(A > B) And (A = C)」は「偽(False) And 真(True)」という事になります。

片方が偽(False)のため、共に真(True)ではありません。

したがって、変数Answer1は「False」になります。

「And」の場合、あくまで全て真(True)でなければ、真(True)を返しません。

  1. 偽(False) And 偽(False)」 ・・・ 偽(False)
  2. 真(True) And 偽(False)」 ・・・ 偽(False)
  3. 偽(False) And 真(True)」 ・・・ 偽(False)
  4. 真(True) And 真(True)」 ・・・ 真(True)

論理演算子「Or」:論理和(または)

Answer2 = (A > B) Or (A = C) '「条件式1 もしくは 条件式2」どちらかが真か?

2つ目の論理演算子は「Or」オアです。

「Or」は論理和と呼ばれ、「Or」で比較する両方の条件式の真偽を比較し、1つでも真なら「True」になります。

「And」の場合は、両方の条件式が真(True)でなければ真(True)を返しませんでしたは、「Or」の場合は片方でOKです。

「And」の際に「(A > B) And (A = C)」は「偽(False) And 真(True)」と解説しました。

つまり片方が真(True)であるため、変数Answer2は「True」になります。

  1. 偽(False) And 偽(False)」 ・・・ 偽(False)
  2. 真(True) And 偽(False)」 ・・・ 真(True)
  3. 偽(False) And 真(True)」 ・・・ 真(True)
  4. 真(True) And 真(True)」 ・・・ 真(True)

論理演算子「Not」:論理否定(~ではない)

    Answer3 = Not (A = B) '条件式の否定
    Answer4 = Not (A = C) '条件式の否定

3つ目の論理演算子は「Not」ノットです。

「Not」は論理否定と呼ばれ、条件式が真のときに偽となり、偽のとき真となります。

難しいく聞こえますが、真と偽がこの「Not」を使うとひっくり返るだけです。

「Not (A = B)」の場合、「(A = B)」の部分は、変数Aが「5」変数Bが「10」のため偽(False)です。

しかし「Not」が付く事により、偽(False)は真(True)に変わります。

したがって、変数Answer3は「True」になります。

変数Answer4も「(A = C)」が真(True)のため、「Not」が付く事により、ひっくり返って「False」となります。

<補足情報>「論理演算子」の種類

演算子書式説明使用例
And条件1 And 条件2論理積:条件1 と 条件2 の両方満たすA AND B
Or条件1 Or 条件2論理和:条件1 か 条件2 のどちらかが満たすA OR B
NotNot 条件論理否定:条件ではないNOT(A = B)
Eqv条件1 Eqv 条件2論理等価演算:「条件1 と 条件2 の両方満たす」
もしくは「条件1 と 条件2 の両方を満たさない」
A Eqv B
Imp条件1 Imp 条件2論理包含演算:「条件式1を満たし 条件式2を満たさない」
以外は真になる
A Imp B
Xor条件1 Xor 条件2排他的論理和:条件式1と条件式2の真偽が一緒の場合は真になるA Xor B
「論理演算子」の種類
よかったらシェアしてね!
目次
閉じる