VBAで処理を作っていると、
最初は単純な条件分岐でも、次第に条件が増えていくことがあります。
例えば:
- 売上が一定以上かどうか
- 在庫が不足しているかどうか
- 日付が期限を過ぎているかどうか
- 顧客区分によって処理を変える
このような場面では、
1つの条件ではなく、複数の条件を組み合わせて判断する必要があります。
しかし実務では、
- 条件が増えるたびにIf文を追加する
- ネスト(入れ子)が深くなる
- 何を判定しているのか分からなくなる
といった問題が頻繁に発生します。
そして最終的には:
修正が怖いコード
になってしまいます。
この記事では、
- 比較演算子の基本
- 複数条件の書き方
- And / Or の正しい使い方
- 条件分岐の設計方法
- 実務での注意点
まで含めて、
「条件が増えても壊れないコード」
を作るための考え方を解説します。
目次
- ✅ 比較演算子とは何か|複数条件の基本になる最重要要素
- ・主な比較演算子の一覧と意味
- ・比較演算子を使った基本的な条件判定の具体例
- 実務ポイント
- ✅ 複数条件を扱うときの基本|And と Or の違いを理解する
- ・And を使って複数条件がすべて成立したときだけ処理する例
- ・Or を使っていずれかの条件が成立したときに処理する例
- 判断基準(重要)
- ✅ 比較演算子を組み合わせて複数条件を作成する基本構文
- ・売上と利益の両方を条件にした複数条件の例
- 設計意図(重要)
- ✅ 括弧を使って条件の優先順位を明確にする方法
- ・括弧を使って条件の優先順位を制御する具体例
- 実務ポイント
- ✅ 条件が増えたときにネストを減らす設計方法
- ・ネストが深くなりすぎた悪い例
- ・複数条件を1つにまとめた改善例
- 設計意図(重要)
- ✅ 実務でよくある複数条件の具体例|売上・在庫・日付判定
- ・期限切れを判定する日付条件の具体例
- ・在庫不足を判定する数量条件の具体例
- ・複数条件で顧客対応を変更する実務例
- ✅ まとめ:複数条件は「書き方」ではなく「設計」で決まる
✅ 比較演算子とは何か|複数条件の基本になる最重要要素
複数条件を扱う前に、
まず理解しておくべきなのが:
比較演算子
です。
比較演算子は、
「値を比較して、条件が成立するかどうか」を判断するためのものです。
一見すると単純ですが、
ここを曖昧に理解したまま条件を増やしていくと、
- 意図しない条件が成立する
- 条件が重複する
- 想定外の処理が実行される
といったトラブルが発生します。
特に、
複数条件では小さなミスが大きな不具合につながる
ため、
まずは比較演算子を正しく整理しておくことが重要です。
・主な比較演算子の一覧と意味
| 演算子 | 意味 |
|---|---|
| = | 等しい |
| <> | 等しくない |
| より大きい
< | より小さい
= | 以上
<= | 以下
・比較演算子を使った基本的な条件判定の具体例
If salesAmount >= 100000 Then
MsgBox "目標達成"
End If
実務ポイント
比較演算子は:
条件の土台
です。
✅ 複数条件を扱うときの基本|And と Or の違いを理解する
複数条件を扱うときに最も重要なのが:
And と Or
です。
しかし実務では、
- とりあえず And を使う
- なんとなく Or を使う
- 動いたからOK
という書き方が非常に多く見られます。
この状態で仕様変更が入ると、
コードが簡単に壊れます。
特に:
- 条件追加
- 条件削除
- 条件変更
が発生したときに問題になります。
・And を使って複数条件がすべて成立したときだけ処理する例
If salesAmount >= 100000 And profitAmount >= 20000 Then
MsgBox "優良顧客"
End If
・Or を使っていずれかの条件が成立したときに処理する例
If stockQuantity <= 0 Or stockQuantity < reorderLevel Then
MsgBox "在庫補充が必要"
End If
判断基準(重要)
And:
すべて必要
Or:
どれか1つ
And と Or の違いを理解できたら、
次に重要になるのは「これらをどのように組み合わせるか」です。
実務では、単純な条件だけでなく、複数の条件を組み合わせて判断する場面がほとんどです。
And と Or を同時に使う具体的な書き方や注意点については、
【VBA】IF文のandとorを組み合わせた複数条件の記事で実務例を交えて詳しく解説しています。
✅ 比較演算子を組み合わせて複数条件を作成する基本構文
ここからが実務の中心です。
複数条件は、
単に条件を並べればよいわけではありません。
重要なのは:
読みやすさ
です。
・売上と利益の両方を条件にした複数条件の例
If salesAmount >= 100000 And profitAmount >= 20000 Then
Call ApplyDiscount
End If
設計意図(重要)
この書き方は:
- 条件が明確
- 読みやすい
- 修正しやすい
というメリットがあります。
比較演算子を組み合わせて条件を作成できるようになると、
次は「その条件をどのように業務で活用するか」が重要になります。
例えば、売上金額に応じてランクを自動表示する仕組みは、
複数条件の考え方をそのまま実務に応用した代表的な例です。
具体的な設定方法や活用例については、【Excel】【営業向け】売上金額に応じてランクを自動表示するIF関数の使い方|簡単に業績ランク付け!の記事で詳しく解説しています。
✅ 括弧を使って条件の優先順位を明確にする方法
複数条件では、
優先順位
が非常に重要です。
ここを曖昧にすると、
意図しない結果になります。
・括弧を使って条件の優先順位を制御する具体例
If (salesAmount >= 100000 And profitAmount >= 20000) _
Or customerRank = "VIP" Then
Call ApplyDiscount
End If
実務ポイント
括弧は:
仕様の説明
です。
✅ 条件が増えたときにネストを減らす設計方法
実務では、
条件は必ず増えます。
そして多くのコードは:
ネスト地獄
になります。
・ネストが深くなりすぎた悪い例
If salesAmount >= 100000 Then
If profitAmount >= 20000 Then
If customerRank = "VIP" Then
Call ApplyDiscount
End If
End If
End If
・複数条件を1つにまとめた改善例
If salesAmount >= 100000 _
And profitAmount >= 20000 _
And customerRank = "VIP" Then
Call ApplyDiscount
End If
設計意図(重要)
この書き方は:
- 可読性が高い
- 修正しやすい
- バグが減る
✅ 実務でよくある複数条件の具体例|売上・在庫・日付判定
ここでは、
現場で頻繁に使われるパターンを紹介します。
・期限切れを判定する日付条件の具体例
If orderDate < Date Then
MsgBox "期限切れ"
End If
・在庫不足を判定する数量条件の具体例
If stockQuantity <= reorderLevel Then
MsgBox "在庫不足"
End If
・複数条件で顧客対応を変更する実務例
If customerRank = "VIP" Or purchaseAmount >= 500000 Then
Call AssignPrioritySupport
End If
在庫数を条件に処理を分岐する場面は、
実務でも非常によく発生します。
例えば、在庫数に応じて発注の要否を自動判定する仕組みは、
複数条件を活用した代表的な応用例です。
具体的な設定方法や実務での活用方法については、
【Excel】【在庫管理】在庫数に応じて発注判断を自動化するIF関数の設定方法|ムダなく効率的な仕入れを実現の記事で詳しく解説しています。
✅ まとめ:複数条件は「書き方」ではなく「設計」で決まる
- 比較演算子は条件の土台
- And はすべて
- Or はどれか
- 括弧は仕様の説明
- ネストは減らす
- 読みやすさが最重要
そして最も重要なのは:
条件は増える前提で書く
ということです。