【Excel VBA】条件分岐 – If文

Excel マクロ(VBA)

今回は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

実行結果は以下の通りです。

コメント

タイトルとURLをコピーしました