動作検証バージョン:64bit Windows 10 Pro + 32bit Excelバージョン2104 ビルド13929.20296 Microsoft Store)
「excelvba and 3つ」
「excel vba and 3つ以上」
といった検索でアクセスが時折あります。
Excel VBAでAnd条件を3つ以上の複数指定するには、どのように書けばいいのか探していらしたのでしょう。
[スポンサードリンク]
And条件3つのIf文のサンプル
アクティブなワークシートのA1:C1セルに数値を入力しておいて、以下のSubプロシージャを実行してみてください。
Sub 科目の得点が3つとも80以上だったときに合格と判定する()
If Range("A1").Value >= 80 And Range("B1").Value >= 80 And Range("C1").Value >= 80 Then
Range("D1").Value = "合格"
Else
Range("D1").Value = "不合格"
End If
End Sub
If Range("A1").Value >= 80 And Range("B1").Value >= 80 And Range("C1").Value >= 80 Then
Range("D1").Value = "合格"
Else
Range("D1").Value = "不合格"
End If
End Sub
3科目のテストの点数が入力されていて、3つとも80点以上だったときに「合格」、そうでなければ「不合格」と判定する例だと考えてください。
1行の文字数が多くて読み辛いと思いますが、
If Range("A1").Value >= 80 And Range("B1").Value >= 80 And Range("C1").Value >= 80 Then
の部分が、And演算子を使って条件を3つ指定している箇所です。
And条件3つのIf文に改行を入れて
上記の書き方では読み辛いですから、以下のように改行を入れておくほうがイイでしょう。
Sub 科目の得点が3つとも80以上だったときに合格と判定する_改行あり()
If _
Range("A1").Value >= 80 And _
Range("B1").Value >= 80 And _
Range("C1").Value >= 80 Then
Range("D1").Value = "合格"
Else
Range("D1").Value = "不合格"
End If
End Sub
If _
Range("A1").Value >= 80 And _
Range("B1").Value >= 80 And _
Range("C1").Value >= 80 Then
Range("D1").Value = "合格"
Else
Range("D1").Value = "不合格"
End If
End Sub
And演算子の前にも後ろにも、論理値を返す「Range("〇〇").Value >= 80」といった論理式を書くということです。
人間が見れば、なんとなく意味がわかる、
If Range("A1").Value And Range("B1").Value And Range("C1").Value >= 80 Then
のような書き方ではダメです。
And条件3つの結果を論理値で出力するサンプル
「合格」「不合格」といった文字列を入力するためにIf文を使っていますが、TRUEまたはFALSEの論理値をD1セルに出力すればいいのであれば、以下のようなSubプロシージャです。
Sub 科目の得点が3つとも80以上だったときにTRUEとする()
Range("D1").Value = _
Range("A1").Value >= 80 And _
Range("B1").Value >= 80 And _
Range("C1").Value >= 80
End Sub
Range("D1").Value = _
Range("A1").Value >= 80 And _
Range("B1").Value >= 80 And _
Range("C1").Value >= 80
End Sub
最終更新日時:2021-05-26 14:35
[スポンサードリンク]
Home » エクセルマクロ・Excel VBAの使い方 » 条件分岐 » VBAでAnd演算子を使って条件を3つ以上指定する