今回はExcel VBAで条件分岐を設定するためのIf文について解説します。
条件分岐とは何か
プログラミングに触れたことのない人のために、以下の図を使って条件分岐という言葉の意味から説明します。
条件というのは物事を決定するための前提のことです。条件分岐というのは、その前提を満たしているかどうかで、決定の内容が変わってくる(分岐=枝分かれする)ということです。上の例でいえば、”テストの点数が80点である”という前提を満たすことができれば、”Yes”の分岐に進み、”評価A”という決定がなされます。前提を満たしていなければ”No”の分岐に進みます。同様の分岐を繰り返し、最後は点数が40点以上なら”評価C”となり、前提を満たさなければ”No”の分岐に進み”赤点”が決定され、ここで分岐は終了します。これが条件分岐です。
If文
まずはIf文の基本的な使い方を説明します。
If 条件式 Then
処理内容
End If
条件式というのは上の例でいう”テストの点数が80点以上か”に該当します。処理内容というのは、上の例に置き換えると評価をAにする、ということになります。分岐を2つ以上作成する方法については後述します。
使用例
基本的なIf文の使い方の例を見てみましょう。以下の表のA列の値が”バナナ”であるならばセルを黄色く塗るという処理内容を想定します。
まずはセルA3について、条件分岐を設定してみましょう。コードは以下のようになります。
If Cells(3, 1).Value = “バナナ” Then
Cells(3, 1).Interior.ColorIndex = 6
End If
実行結果は以下の通りです。
ここに、繰り返し処理のFor文を組み合わせて以下のように記述します。
Dim i As Integer
For i = 3 To 20
If Cells(i, 1).Value = “バナナ” Then
Cells(i, 1).Interior.ColorIndex = 6
End If
Next
実行結果は以下の通りです。
なおFor文については以下の記事を参照ください。
様々使い方
If文による条件分岐は、上記以外にも様々な使い方がありますので、以下で紹介します。
If Else
まずElseを使うことで複数の分岐を設定する方法を説明します。使い方は以下の通りです。2つ目以降の条件は”Else If“で設定し、最後にすべての条件に当てはまらない場合の処理は”Else”で設定できます。
If 条件式 Then
処理内容
Else If 条件式 Then
処理内容
Else If 条件式 Then
処理内容
Else 処理内容
End If
次に、以下の表を使って具体的な使用例を示します。
A列がバナナなら黄色、メロンなら緑、いちごならピンクに塗るように条件分岐を設定してみましょう。コードは以下のようになります。
Dim i As Integer
For i = 3 To 24
If Cells(i, 1).Value = “バナナ” Then
Cells(i, 1).Interior.ColorIndex = 6
ElseIf Cells(i, 1).Value = “メロン” Then
Cells(i, 1).Interior.ColorIndex = 4
ElseIf Cells(i, 1).Value = “いちご” Then
Cells(i, 1).Interior.ColorIndex = 7
Else
End If
Next
実行結果は以下の通りです。
なお、セルの塗りつぶしについては以下の記事を参照ください。
複数条件(And/Or)
次に複数条件を設定する方法を紹介します。”かつ”は”And”で、”又は”は”Or”で設定することができます。使い方は以下の通りです。
If 条件式 And(Or) 条件式 Then
処理内容
End If
条件式の記述の方法については、間違えやすいポイントなので注意してください。例えば”C3セルが田中もしくは鈴木ならば”とするときは、やや回りくどいですが以下のように記述します。
If Cells(3,3).Value = “田中” Or Cells(3,3).Value = “鈴木” Then
誤って以下のように記述しないようにしましょう。
If Cells(3,3).Value = “田中” Or “鈴木” Then
次に、C列が”田中”又は”鈴木”ならセルを黄色に塗るように条件分岐を設定してみましょう。コードは以下のようになります。
Dim i As Integer
For i = 3 To 24
If Cells(i, 3).Value = “田中” Or Cells(i, 3).Value = “鈴木” Then
Cells(i, 3).Interior.ColorIndex = 6
End If
Next
実行結果は以下の通りです。
不等号(<=>)
最後に、数値データに対して不等号を使って条件を設定する方法を紹介します。基本的な使い方は上述の方法と同じで、異なるのは不等号のみですので、以下では図を用いて使用例を紹介します。
使用例(~以上)
まずは販売価格が1,500以上のものを黄色くしてみましょう。コードは以下の通りです。
Dim i As Integer
For i = 3 To 24
If Cells(i, 5).Value >= 1500 Then
Cells(i, 5).Interior.ColorIndex = 6
End If
Next
実行結果は以下の通りです。
使用例(~ではない)
次に、担当者が”田中”ではない時に黄色く塗ってみます。”~ではない”いわゆる”Not Equal”はVBAでは”<>”と記述します。コードは以下の通りです。
Dim i As Integer
For i = 3 To 24
If Cells(i, 3).Value <> “田中” Then
Cells(i, 3).Interior.ColorIndex = 6
End If
Next
実行結果は以下の通りです。
使用例(~を含む)
最後に、受注番号が”S-”を含むときに黄色く塗ってみます。”~を含む”いわゆる部分一致はVBAでは”Like”を使います。コードは以下の通りで、*(アスタリスク)で囲んだ内容で部分一致の検索条件を指定します。
Dim i As Integer
For i = 3 To 24
If Cells(i, 2).Value Like “*S-*” Then
Cells(i, 2).Interior.ColorIndex = 6
End If
Next
End Sub
実行結果は以下の通りです。
コメント