【Excel VBA】If~ThenステートメントとAnd演算子で複数条件(~かつ)を設定する方法

【Excel VBA】If~ThenステートメントとAnd演算子で複数条件(~かつ)を設定する方法

VBAでIf~Thenステートメントを設定される際、複数の条件式を組み合わせたい場合があるかと思います。

VBAでは「~かつ」の複数条件を設定する際にはAnd演算子が必要になります。

今回はIf~ThenステートメントとAnd演算子で複数条件(~かつ)を設定する方法を解説していきます。

If~ThenステートメントとAnd演算子を組み合わせた際の基本構文

もちろん「ElseIf」などでさらに条件分岐を設定することも可能です。(今回はオーソドックスな例を紹介)

条件式1

1つ目の判断基準となる条件を指定します。

たとえば、”A4セルは○ですか?”というようなYES/NOでできる質問のことです。

条件式2

条件式1と組みあせたい2つ目の判断基準となる条件を指定します。

And演算子やOr演算子と組み合わせることで条件式は2つ以上設定することが可能です。

処理1

上記複数の条件式の結果が真(TRUE)の場合に行う処理を指定します。

処理2

上記複数の条件式の結果が偽(FALSE)の場合に行う処理を指定します。

使用例

学科および実技でそれぞれ70点以上で合格となるテストがあったとします。

B2セルが学科の点数、C2セルが実技の点数、D2セルが合否欄で、B2セル・C2セルがそれぞれ70以上の場合はD2セルの値が”○”、それ以外の場合はD2セルの値が”×”なるように設定します。

If~Thenステートメント+And演算子①

2行目の「If」と「Then」の間が条件式となります。

そして、条件式を複数つなげるため、条件1の後に「And」(間に半角スペース)をつけて条件2を記述します。

今回の条件1は「B2セルが70以上」なので「Range("B2").Value >= 70」となり、条件2は「C2セルが70以上」なので「Range("C2").Value >= 70」となります。

続いて3行目が条件1を満たした場合の処理1を記述します。(条件1の真の場合)

処理は「D2セルの値を"○"にする」なので「Range("D2").Value = "○"」となります。

4行目に「Else」、5行目で条件を満たさない場合の処理(処理2)を記述します。(偽の場合)

処理2は「D2セルの値を”×”にする」なので「Range(“D2″).Value = “×”」となります。

6行目に「End If」で締めて終了になります。

マクロ動作イメージ

If~Thenステートメント+And演算子②

D2セルが最初はブランクになっています。

If~Thenステートメント+And演算子③

マクロを起動すると、B2・C2セルがそれぞれ70以上の値が入っていればD2セルに”○”の値が返ります。

If~Thenステートメント+And演算子④

そして、B2・C2セルのいずれかが70未満の値であればD2セルに”×”の値が返ります。

Excel内の類似機能

If~ThenステートメントとAnd演算子の組み合わせにもっとも類似したExcelの機能といえば、フォーマット関数でのIF関数とAND関数の組み合わせです。(考え方はいっしょです)

VBAのコードとフォーマット関数では記述の仕方が少しばかり異なるので、フォーマット関数で設定したい場合は下記記事をご参照ください。

IF関数とAND関数で複数条件(~かつ)を設定する方法 | Excelを制する者は人生を制す ~No Excel No Life~

If~ThenステートメントはIF関数とくらべて、範囲選択やコピー・消去などのメソッドも設定できるため、より複雑な設定が可能ですよ!

まとめ

And演算子は活用する機会が多いので、ぜひともIf~Thenステートメントとセットで覚えると良いですね!

And演算子の考え方自体は下記記事をご参照ください。

【Excel VBA】比較演算子と論理演算式まとめ | Excelを制する者は人生を制す ~No Excel No Life~

ベン図だとかなり理解しやすいですよ!