Excel VBAのIf文で複数の条件を指定する
Excel VBAのIf文では、AndやOrを使って複数の条件を組み合わせて判定することができます。
たとえば、「数量が20以上、かつ在庫がある場合」や「AまたはBのどちらかの条件を満たす場合」といった判定が可能です。
この記事では、AndとOrの違いと基本的な使い方を、練習用ファイルを使って一緒にやってみましょう!
ダウンロードしたファイルは、通常のExcel形式(.xlsx)になっています。
そのままマクロを書いて保存すると、せっかく書いたコードがすべて消えてしまいます!
💡練習用ファイルを使う前の準備
- ファイルをダウンロードして開く
- マクロ有効ブック(.xlsm)形式で保存し直す
Andを使って複数の条件を指定する
複数の条件をすべて満たしている場合に処理を行いたいときは「And」を使用します。
今回の練習用ファイルには、次のデータを用意しています。
- A列:数量(値:15)
- B列:在庫状況(値:在庫あり)
- C列:判定(空白)
ここでは、A2セルの数量が20以上、かつB2セルが「在庫あり」の場合に、C2セルへ「○」を入力してみましょう。
Andを使ったコード
If Range("A2") >= 20 And Range("B2") = "在庫あり" Then
Range("C2") = "○"
End Ifコードの解説
If Range(“A2”) >= 20
A2セルの数値が20以上かどうかを判定する条件です。
And Range(“B2”) = “在庫あり” Then
Andを使って、B2セルの文字列が「在庫あり」と一致するという条件を追加します。
Andで条件をつないだ場合、両方の条件を満たしたときだけThen以降の処理へ進みます。
Range(“C2”) = “○”
End If
A2セルが20以上で、なおかつB2セルが「在庫あり」の場合に、C2セルへ「○」を入力します。
練習用ファイルではA2セルが「15」のため、「20以上」という条件を満たしていません。
B2セルは「在庫あり」ですが、Andでは両方の条件を満たす必要があるため、C2セルに「○」は入力されません。
最後にEnd IfでIf文を終了します。
Orを使って複数の条件を指定する
複数の条件のうち、いずれか1つでも満たしている場合に処理を行いたいときは「Or」を使用します。
先ほどと同じ練習用ファイルを使って、今度はAndをOrに変更してみましょう。
条件は同じく、以下の2つです。
- A2セルの数量が20以上
- B2セルが在庫あり
Orを使ったコード
If Range("A2") >= 20 Or Range("B2") = "在庫あり" Then
Range("C2") = "○"
End Ifコードの解説
If Range(“A2”) >= 20
A2セルの数値が20以上かどうかを判定する条件です。
Or Range(“B2”) = “在庫あり” Then
Orを使って、B2セルの文字列が「在庫あり」と一致するという条件を追加します。
Orで条件をつないだ場合、どちらか一方の条件を満たしていればThen以降の処理へ進みます。
Range(“C2”) = “○”
End If
A2セルの「15」は20以上ではありませんが、B2セルには「在庫あり」と入力されています。
Orではどちらか一方を満たせばよいため、今回は条件を満たしてC2セルに「○」が入力されます。
最後にEnd IfでIf文を終了します。
AndとOrの違い
AndとOrはどちらも複数の条件を指定するときに使用しますが、処理を実行する条件が異なります。
| 指定方法 | 処理を実行する条件 | 使用例 |
|---|---|---|
| And | すべての条件を満たす | 20以上 かつ 在庫あり |
| Or | いずれかの条件を満たす | 20以上 または 在庫あり |
「両方とも満たす必要がある」ならAnd、「どちらかを満たせばよい」ならOrと考えると使い分けやすくなります。
今回の練習用ファイルでは、同じ「15・在庫あり」というデータでも、Andでは条件を満たさず、Orでは条件を満たします。
同じ条件でもAndとOrによって判定結果が変わる点を確認しておきましょう。
3つ以上の条件も指定できる
AndやOrでは、2つだけでなく3つ以上の条件を指定することもできます。
ここでは、練習用ファイルに「販売状況」の列を追加して、3つの条件を指定してみましょう。
C列に「販売状況」を追加し、これまでC列にあった「判定」はD列へ移動します。
- A列:数量(値:15)
- B列:在庫状況(値:在庫あり)
- C列:販売状況(値:販売中)
- D列:判定(空白)
たとえば、「数量が20以上」「在庫あり」「販売中」という3つの条件をすべて満たす場合は、次のように記述します。
Andで3つの条件を指定するコード
If Range("A2") >= 20 And Range("B2") = "在庫あり" And Range("C2") = "販売中" Then
Range("D2") = "○"
End IfAndでつないだ3つの条件をすべて満たした場合のみ、D2セルに「○」が入力されます。
Orの場合も同じように条件を追加でき、いずれか1つを満たせば処理が実行されます。
まとめ
Excel VBAのIf文では、AndやOrを使うことで複数の条件を組み合わせて判定できます。
Andはすべての条件を満たす場合、Orはいずれかの条件を満たす場合に処理を実行します。
1つの条件だけでは判定できない場合に使用する機会も多いため、If文の基本とあわせて覚えておくと便利ですね。
次回は、If文とFor文を組み合わせて、一覧のデータを順番に判定する方法を一緒に見ていきましょう。




