検索

キーワード


【Excel VBA】If Elseとは違う条件式(Select Case)について

  • 公開日:2020-05-13 18:29:29
  • 最終更新日:2021-03-03 22:56:56

エンジニアのIMMRです。

Excel VBAの条件式には、以前に説明したExcel VBA 条件式(If Else)とこれから説明するSelect Caseの二つあります。


1.従来のIf Else条件式

If Elseは条件に合った時は処理Aを、条件に合わなかったら処理Bを実行します。

では、下記のようなデータがあり、複数の条件があるとします

If Elseを使用して作成すると2種類の方法が浮かぶと思います。


テスト結果の点数に応じて、テスト結果を記載します。

 ・100点なら合格A

 ・90~99点なら合格B

 ・80~89点なら合格C

 ・79点以下なら不合格


図1 ブック(処理前)

If Elseを使ったマクロを実行する前の画面


方法1

If Elseで合格AかBかCかを1つずつ判断します。

Sub test6_1()

Dim i As Long

    For i = 3 To 21

        If Cells(i, 2) >= 100 Then
            Cells(i, 3) = "合格A"
        End If

        If Cells(i, 2) >= 90 And Cells(i, 2) < 100 Then
            Cells(i, 3) = "合格B"
        End If

        If Cells(i, 2) >= 80 And Cells(i, 2) < 90 Then
            Cells(i, 3) = "合格C"
        End If
       
        If Cells(i, 2) < 80 Then
            Cells(i, 3) = "不合格"
        End If
        
    Next i

End Sub


方法2

If ElseとElseIfを使用して、判断します。

Sub test6_2()

Dim i As Long

    For i = 3 To 21

        If Cells(i, 2) >= 100 Then
            Cells(i, 3) = "合格A"
        ElseIf Cells(i, 2) >= 90 And Cells(i, 2) < 100 Then
            Cells(i, 3) = "合格B"
        ElseIf Cells(i, 2) >= 80 And Cells(i, 2) < 90 Then
            Cells(i, 3) = "合格C"
        Else
            Cells(i, 3) = "不合格"
        End If

    Next i

End Sub



上記2つの方法でも問題なく動作はしますが

何度も不要な処理をしてしまうので効率が悪くなってしまいます。

このように複数の条件が存在する場合は、If Elseではなく、Select Case文が役に立ちます。


2.条件式Select CaseとIf Elseの違い

Select  Caseは条件ではなくて、変数を対象とし、ケースによって変えることが出来ます。

変数を対象として、

 ・変数がケース1なら処理①

 ・変数がケース2なら処理②

 ・変数がケース3なら処理③

 ・それ以外なら処理④

という感じです。


If Else と Select Case で何が違うかというと

 ・If Elseは、条件式を対象としています。

   そのため、条件に合えば、この処理を 合わなければあっちの処理をという流れです。

 ・Select Caseは、変数を対象としています。

   そのため、変数がこのケースならこの処理を あのケースならあの処理を そっちのケースならそっちの処理をという流れです。


If ElseとSelect Caseは、下記のような処理の流れになります。


図2 If Elseの処理の流れ

If Elseのみを使ったフローチャート

図3 If Else とElseIf 処理の流れ

If ElseとElseIfを使ったフローチャート


図4 Select Case 処理の流れ

Select Caseを使ったフローチャート


3.Select CaseとSelect Case Trueの使用例

下記のように記載します。

        Select Case 変数
        
            Case 条件A
                処理①
            Case 条件B
                処理②
            Case 条件C
                処理③
            Case Else
                処理④
        
        End Select


変数:確認をしたい変数やセルを指定します。

 その指定したセルが条件Aに当てはあれば処理①を 条件Bに当てはあれば処理②を

 そして、条件に該当しなかった場合は Else 箇所を実行します。 ※Elseは、記入がなくてもよいです。 


また条件は下記のようになっています。


図5 Select Caseの条件記述方法

Select Case文での条件指定


記載例です。

Select Case 変数
    Case 100
        Cells(i, 3) = "合格A"
End Select


Select Case 変数
    Case 100,80
        処理①
End Select


Select Case 変数
    Case 80 To 90
        処理①
End Select


Select Case 変数
    Case Is < 80
        処理①
End Select


Select Case True
    Case 変数 Like "あ*"
        処理①
End Select


Select Case True
    Case 変数 Like "??"
        処理①
End Select


Select Case True
    Case 変数 Like "#"
        処理①
End Select

*Like 演算を使用する場合は

 Select Case 変数ではなくて、Select Case True そしてCaseの中で変数を記載します。


4.実行

図6 ブック(実行前)

Select Case文を使ったマクロを実行する前の画面


サンプルコード

Sub Test6()

Dim i As Long

    For i = 3 To 21

        Select Case Cells(i, 2)
            Case 100
                Cells(i, 3) = "合格A"
            Case 90 To 99
                Cells(i, 3) = "合格B"
            Case 80 To 89
                Cells(i, 3) = "合格C"
            Case Else
                Cells(i, 3) = "不合格"
        End Select

    Next i

End Sub


図7 ブック(上記、コード実行後)

Select Case文を使ったマクロの実行結果


・100点は、合否欄に合格Aが記載されています。

・90~99には、合否欄に合格Bが記載されています。

・80~89には、合否欄に合格Cが記載されています。

・79以下には、合否欄に不合格が記載されています。


【著者】

Imamura

今まではExcel VBAの開発をしてきました。
開発を主にしたものや他の業務の効率化を目指して行ったものさまざまです。
現在は、他のプログラミング言語に挑戦して、スキルアップを目指しています。