カテゴリ: Excel VBA 更新日: 2026/02/08

VBAの比較演算子・論理演算子の使い方完全ガイド!初心者でも条件分岐が書ける

VBAの比較演算子・論理演算子の使い方まとめ(初心者向け)
VBAの比較演算子・論理演算子の使い方まとめ(初心者向け)

先生と生徒の会話形式で理解しよう

生徒

「先生、条件分岐の If 文はわかりましたが、もっと複雑な条件、例えば『80点以上かつ出席率が100%の人』みたいな条件はどう書けばいいんですか?」

先生

「それは便利な方法がありますよ。VBAでは 『比較演算子』『論理演算子』 を組み合わせることで、複雑な条件を自由自在に作ることができます。」

生徒

「演算子……なんだか数学みたいで難しそうですね。」

先生

「記号の意味さえ覚えてしまえば簡単です!パソコンに詳しくない方でもわかるように、身近な例えで解説していきますね。」

1. 比較演算子とは?値を比べる基本の記号

1. 比較演算子とは?値を比べる基本の記号
1. 比較演算子とは?値を比べる基本の記号

Excel VBA(エクセル・ブイビーエー)の比較演算子(ひかえんざんし)とは、二つの値を比べて「正しい(True)」か「正しくない(False)」かを判断するための記号です。

算数で習った「より大きい(>)」や「等しい(=)」のことだと思えば大丈夫です。VBAでは、条件分岐の If 文の中でよく使われます。まずは、どのような種類があるのか一覧を見てみましょう。

記号 読み方 意味
= 等しい 左と右が同じ値である
<> 等しくない 左と右が違う値である
> より大きい 左が右よりも大きい(右は含まない)
< より小さい 左が右よりも小さい(右は含まない)
>= 以上 左が右と同じか、大きい
<= 以下 左が右と同じか、小さい

2. 「等しくない(<>)」の使い方をマスターしよう

2. 「等しくない(<>)」の使い方をマスターしよう
2. 「等しくない(<>)」の使い方をマスターしよう

比較演算子の中で、初心者が一番間違いやすいのが「等しくない(不等号)」を表す <> です。数学では「≠」を使いますが、キーボードにはその記号がないため、小なり(<)と大なり(>)を背中合わせにして表現します。

例えば、「もし入力された文字が『未完』でなければ、処理を進める」といった場合に使います。


Sub CheckStatus()
    Dim status As String
    status = "完了"
    
    ' ステータスが「未完」ではないとき
    If status <> "未完" Then
        MsgBox "この作業は進めても大丈夫です!"
    End If
End Sub

このように、「〜ではない」という条件を作りたいときは <> を使いましょう。これだけで条件分岐の幅が大きく広がります。

3. 以上・以下・より大きい・より小さいの境界線

3. 以上・以下・より大きい・より小さいの境界線
3. 以上・以下・より大きい・より小さいの境界線

数値を扱うときに重要なのが、「その数字を含むかどうか」です。パソコンに慣れていない方は、ここを曖昧にすると計算ミスに繋がります。

  • 「以上(>=)」と「以下(<=)」: その数字も「当たり」に含まれます。
  • 「より大きい(>)」と「より小さい(<)」: その数字は「当たり」に含まれません。

Sub AgeCheck()
    Dim age As Integer
    age = 20
    
    ' 20以上かどうか(20歳も含まれる)
    If age >= 20 Then
        MsgBox "あなたはお酒が飲めます。"
    End If
    
    ' 20より大きいかどうか(20歳は含まれない)
    If age > 20 Then
        MsgBox "あなたは21歳以上ですね。"
    End If
End Sub

Excelの自動化プログラムを作るときは、「境界線の数字をどっちに入れたいか」を常に意識することが大切です。

4. 論理演算子とは?条件を繋げる接着剤

4. 論理演算子とは?条件を繋げる接着剤
4. 論理演算子とは?条件を繋げる接着剤

次に、さらに高度な条件を作るための論理演算子(ろんりえんざんし)について学びましょう。論理演算子は、複数の比較条件をくっつける「接着剤」のような役割をします。

よく使うのは次の3つです。これを覚えるだけで、Excel VBAの自動化がぐっと実用的になります。

And(アンド)

「かつ」という意味。全ての条件が正しいときだけ「当たり」になります。

Or(オア)

「または」という意味。どれか一つでも条件が正しければ「当たり」になります。

Not(ノット)

「〜ではない」という意味。条件をひっくり返します。

5. Andを使って「全ての条件を満たす」判定をする

5. Andを使って「全ての条件を満たす」判定をする
5. Andを使って「全ての条件を満たす」判定をする

And(アンド)は、複数の条件が全て「Yes(True)」である必要があるときに使います。例えば、「テストが80点以上」で、かつ「出席が20日以上」の両方を満たした人だけにボーナスを出すといった場合です。


Sub BonusCheck()
    Dim score As Integer
    Dim attendance As Integer
    
    score = 85
    attendance = 25
    
    ' 点数が80以上、かつ、出席が20以上のとき
    If score >= 80 And attendance >= 20 Then
        MsgBox "ボーナス支給対象です!"
    Else
        MsgBox "対象外です。"
    End If
End Sub

もし、点数が100点でも出席が5日しかなければ、この If 文の結果は「ハズレ(False)」になります。非常に厳しい判定ですね。

6. Orを使って「どれか一つでも満たす」判定をする

6. Orを使って「どれか一つでも満たす」判定をする
6. Orを使って「どれか一つでも満たす」判定をする

Or(オア)は、並べた条件のうち、どれか一つでも当てはまれば「当たり(True)」とする場合に便利です。例えば、「土曜日」か「日曜日」だったらお休み、という条件を作るときに使います。


Sub HolidayCheck()
    Dim dayOfWeek As String
    dayOfWeek = "日曜日"
    
    ' 日曜日、または、土曜日のとき
    If dayOfWeek = "日曜日" Or dayOfWeek = "土曜日" Then
        MsgBox "今日はお休みです。ゆっくりしましょう。"
    Else
        MsgBox "お仕事頑張りましょう!"
    End If
End Sub

Orを使えば、たくさんの条件があっても「どれか一つでも引っかかればOK」という優しい判定を作ることができます。ただし、つなげすぎるとコードが長くなるので注意しましょう。

7. Notを使って条件を逆転させる

7. Notを使って条件を逆転させる
7. Notを使って条件を逆転させる

Not(ノット)は少し特殊で、その後の条件を「逆」にします。「もし〜ではないなら」という言い回しを作りたい時に使います。初心者のうちは <>(等しくない)を使えば事足りることも多いですが、複雑な条件を丸ごとひっくり返す時に便利です。


Sub NotSample()
    Dim isHidden As Boolean
    isHidden = False
    
    ' 非表示(True)ではないなら
    If Not isHidden Then
        MsgBox "画面は表示されています。"
    End If
End Sub

上記のコードの If Not isHidden は、「isHiddenという箱の中身が『真(True)』ではない場合」つまり「偽(False)の場合」に実行されます。少し頭がこんがらがるかもしれませんが、「否定」の意味を持つと覚えておきましょう。

8. 複数の演算子を組み合わせるときの優先順位

8. 複数の演算子を組み合わせるときの優先順位
8. 複数の演算子を組み合わせるときの優先順位

算数で「足し算より掛け算を先に計算する」というルールがあるように、VBAの演算子にも「優先順位(ゆうせんじゅんい)」があります。基本的には以下の順番で計算されます。

  1. 比較演算子(=, >, < など)
  2. Not
  3. And
  4. Or

もし、自分の意図した順番で計算してほしいときは、( )括弧(かっこ)を使いましょう。括弧で囲った部分が最優先で計算されます。


Sub ComplexLogic()
    Dim score As Integer
    Dim hasTicket As Boolean
    
    score = 90
    hasTicket = False
    
    ' (点数が80以上、かつ、チケットを持っている) または 特別招待のとき
    ' 括弧を使って条件のまとまりを明確にするのがコツです
    If (score >= 80 And hasTicket = True) Or score = 100 Then
        MsgBox "入場できます。"
    End If
End Sub

9. 条件分岐を制する者はVBAを制する

9. 条件分岐を制する者はVBAを制する
9. 条件分岐を制する者はVBAを制する

今回学んだ「比較演算子」と「論理演算子」は、Excel VBA(エクセル・ブイビーエー)で自動化プログラムを作るための「知恵」そのものです。単なるコピー&ペーストの自動化から、状況を自分で判断して動く「賢いマクロ」を作るためには、これらの演算子の使いこなしが欠かせません。

最初は =(イコール)や >(大なり)といった簡単なものから使い始め、慣れてきたら AndOr で条件を肉付けしていきましょう。プログラミングは積み重ねです。パソコンのキーボードで一歩ずつコードを打ち込んでいけば、必ず自由に扱えるようになりますよ!

カテゴリの一覧へ
新着記事
New1
Office Scripts
Office Scriptsで日付判定!Excel条件付き書式を自動化して期限管理をラクにする方法
New2
Office Scripts
Office Scripts普及の歴史とMicrosoftの方向性!Excel自動化が進化してきた流れをやさしく解説
New3
Excel VBA
Excel VBA関数を用途別に作成!計算・文字列処理の基本を初心者向けに解説
New4
Office Scripts
Office Scriptsで条件付き書式を自動化!数値変化に応じてExcelの書式を自動更新する方法
人気記事
No.1
Java&Spring記事人気No1
Excel VBA
Excelマクロのセキュリティ設定の基本!安全に実行するための信頼センター設定まとめ
No.2
Java&Spring記事人気No2
Office Scripts
Office Scriptsでできること・できないことを完全整理!Excel自動化の基本と限界をやさしく解説
No.3
Java&Spring記事人気No3
Excel VBA
Excel VBAとOffice Scriptsの違いを比較!初心者でもわかる学ぶべきスキル
No.4
Java&Spring記事人気No4
Excel VBA
目的別にモジュールを分割する方法!処理単位で整理して見やすくするテクニック
No.5
Java&Spring記事人気No5
Excel VBA
Excel VBA基本文法の総まとめ!初心者が必ず押さえるべき20の基礎ポイント完全ガイド
No.6
Java&Spring記事人気No6
Office Scripts
Office Scriptsで条件付き書式を自動化!Excel自動化初心者向けスクリプト操作の基本
No.7
Java&Spring記事人気No7
Excel VBA
Excel VBAの開発環境を最速で整える!VBEの開き方から基本操作まで完全ガイド
No.8
Java&Spring記事人気No8
Office Scripts
Office Scriptsで日付判定!Excel条件付き書式を自動化して期限管理をラクにする方法