Excel VBAでIf文を使って条件分岐を行います。その中で、複数の条件を要求する場合にはAnd演算子を使います。この演算子を使うことで、すべての条件が満たされた場合にのみ特定の処理を実行するように設定できます。
If文とAnd条件の基本的な書き方や活用方法に関して紹介します。
目次
If文とAND条件の基本構文
VBA のIf文とAnd条件を使用した基本的な構文は以下の通りです。
If 条件1 And 条件2 Then
' 条件がすべて満たされた場合の処理
Else
' 条件が満たされなかった場合の処理
End If
- 条件1、条件2:2つ以上の条件を指定します。
- And: 複数の条件を結合するために使用します。
- 条件1と条件2が両方ともTrueの場合にのみ、
Then後の処理が実行されます。
両方の条件が真の場合のみ処理を実行する
2つの数値が特定の条件を満たすかどうかをチェックする簡単な例です。
Sub AndConditionExample()
Dim a As Integer
Dim b As Integer
a = 10
b = 20
If a > 5 And b < 30 Then
MsgBox "条件を満たしました!"
Else
MsgBox "条件を満たしませんでした。"
End If
End Sub
解説
a > 5: 変数aが 5 より大きいかどうかをチェックします。b < 30: 変数bが 30 未満であるかどうかをチェックします。- 両方の条件が満たされた場合には、メッセージボックスで「条件を満たしました!」と表示されます。
ElseIfを使用して複数の条件分岐を実装する
ElseIfを使用することで、さらに複雑な条件分岐を行うことができます。
Sub ElseIfExample()
Dim score As Integer
score = 75
If score >= 90 And score <= 100 Then
MsgBox "優秀!"
ElseIf score >= 60 And score < 90 Then
MsgBox "合格です。"
Else
MsgBox "不合格です。"
End If
End Sub
解説
score >= 90 And score <= 100:90点以上100点以下の場合に「優秀!」と表示します。score >= 60 And score < 90:60点以上90点未満の場合に「合格です。」と表示します。- それ以外の場合は「不合格です。」と表示します。
複数の条件でセルの背景色を変更する
指定した範囲内で値が特定の範囲内に収まっているセルの背景色を変更します。
【VBA】フォーマット設定:数値形式・フォント・背景色の一括/条件設定
Sub HighlightCells()
Dim rng As Range
Dim cell As Range
Set rng = ThisWorkbook.Worksheets("Sheet1").Range("A1:A10")
For Each cell In rng
If cell.Value >= 10 And cell.Value <= 20 Then
cell.Interior.Color = RGB(255, 255, 0) ' 黄色に変更
End If
Next cell
End Sub
解説
cell.Value >= 10 And cell.Value <= 20: セルの値が10以上20以下の場合をチェックします。- 条件を満たしたセルの背景色を黄色に変更します。
AND条件でデータをフィルタリングする
データの中から、特定の条件を満たす実行だけを抽出する例です。
Sub FilterData()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1")
Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
Dim i As Long
For i = 2 To lastRow
If ws.Cells(i, 2).Value >= 50 And ws.Cells(i, 3).Value <= 100 Then
ws.Rows(i).Hidden = False ' 条件を満たす行を表示
Else
ws.Rows(i).Hidden = True ' 条件を満たさない行を非表示
End If
Next i
End Sub
解説
- 列Bの値が50以上、列Cの値が100以下の場合のみ、その行を表示します。
- 条件を満たさない実行は非表示となります。
よくある疑問点
ANDとORの違いは?
And:すべての条件が満たされる場合にTrueを返します。Or:いずれかの条件が満たされれば True を返します。
条件が増えるとどうなる?
条件が複雑になる場合は、可読性を高めるために条件式を変数に入れるか、変更を活用すると良いです。
Dim condition1 As Boolean
Dim condition2 As Boolean
condition1 = (a > 5)
condition2 = (b < 30)
If condition1 And condition2 Then
' 処理
End If
まとめ
If文のAnd条件やデータ処理で特定の条件に基づく処理は実用的な技術です。条件が適切に設定されている事を確認し、必要に応じてコメントを追加して可読性を考慮しましょう。