ここでは Excel VBA で複雑な条件を扱う方法 を、プログラミング初心者向けにかみ砕いて解説し、例題付きで説明します。
1. 複雑な条件とは?
複雑な条件とは、1つの値だけでなく、複数の値や状態を組み合わせて判断する場合を指します。
例えば:
- 性別 + 年齢 + 職業
- 点数 + 出席日数
- 天気 + 気温
このような場合、単純な If や Select Case だけでは書きにくくなることがあります。
2. 基本的な方法
複雑な条件を扱う方法は主に3つあります。
方法①:If と And / Or を使う
複数条件をまとめて判定できます。
例:性別と年齢で判定
Sub If_AndOr例()
Dim gender As String
Dim age As Integer
gender = Range("A1").Value
age = Range("B1").Value
If gender = "男" And age >= 20 And age <= 30 Then
MsgBox "若い男性です"
ElseIf gender = "男" And age >= 31 Then
MsgBox "年上の男性です"
ElseIf gender = "女" And age >= 20 And age <= 30 Then
MsgBox "若い女性です"
ElseIf gender = "女" And age >= 31 Then
MsgBox "年上の女性です"
Else
MsgBox "不明です"
End If
End Sub
VB✅ ポイント:
And:両方の条件を満たすときOr:どちらかの条件を満たすとき- ネストが浅くても複雑な判定が可能
方法②:ネストした Select Case を使う
前に説明したように、条件を段階的に分ける方法です。
- 外側:性別
- 中間:年齢
- 内側:職業
これは初心者にとって 条件を整理しやすい方法 です。
方法③:条件を変数や文字列にまとめる
- 性別・年齢カテゴリ・職業を 1つのキー文字列にまとめて判定
- ネストを減らし、コードをスッキリ書ける
Dim key As String
key = gender & "_" & ageCategory & "_" & job
Select Case key
Case "男_若い_学生"
MsgBox "若い男性の学生です"
Case "女_中年_会社員"
MsgBox "中年女性の会社員です"
Case Else
MsgBox "不明です"
End Select
VB3. 練習例:点数と出席日数で成績判定
条件
- 点数(C1セル)と出席日数(D1セル)で判定
- ルール:
- 点数 >= 80 かつ 出席日数 >= 90 → 「優秀」
- 点数 >= 60 かつ 出席日数 >= 75 → 「合格」
- それ以外 → 「不合格」
解答例(If And を使用)
Sub 成績判定複雑条件()
Dim score As Integer
Dim attendance As Integer
score = Range("C1").Value
attendance = Range("D1").Value
If score >= 80 And attendance >= 90 Then
MsgBox "優秀"
ElseIf score >= 60 And attendance >= 75 Then
MsgBox "合格"
Else
MsgBox "不合格"
End If
End Sub
VB✅ ポイント:
Andを使うことで 複数条件を1つの判定にまとめられる- 条件の順番が重要(優先度の高い条件を先に書く)
4. コツと注意点
- 条件を整理してからコードを書く
- 表にして考えるとわかりやすい
- 優先度の高い条件から順に書く
- 例えば「優秀」判定を最後に書くと正しく判定できない
And/Orを活用- 複数の条件を組み合わせるときに便利
- 場合によっては関数や変数で中間判定を作る
- 年齢カテゴリ、成績ランクなどを変数にすることでネストが浅くなる
💡 この考え方を応用すると、
- 「性別+年齢+職業+スコア+出席日数」など、5つ以上の条件も整理して扱えるようになります。
