【Excel VBA】If Elseとは違う条件式(Select Case)について
Workteria(ワークテリア)では難易度の高いものから低いものまで、スキルや経験に合わせた案件を多数揃えています。会員登録は無料ですので、ぜひ会員登録してご希望の案件を探してみてください!
フリーランス/正社員のエンジニアとして活躍するには、ご自身のスキルや経験に合わせた仕事を選ぶことが大切です。ご希望の案件がみつからない場合はお気軽にお問い合わせください!ユーザ満足度の高いキャリアコンサルタントが在籍していますので、希望条件や悩み事などなんでもご相談ください。ご希望にピッタリの案件をご紹介させていただきます。
エンジニアの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 ブック(処理前)
方法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の処理の流れ
図3 If Else とElseIf 処理の流れ
図4 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 変数
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 ブック(実行前)
サンプルコード
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 ブック(上記、コード実行後)
・100点は、合否欄に合格Aが記載されています。
・90~99には、合否欄に合格Bが記載されています。
・80~89には、合否欄に合格Cが記載されています。
・79以下には、合否欄に不合格が記載されています。
正社員/フリーランスの方でこのようなお悩みありませんか?
- 自分に合う案件を定期的に紹介してもらいたい
- 週2、リモートワークなど自由な働き方をしてみたい
- 面倒な案件探し・契約周りは任せて仕事に集中したい
そのような方はぜひ、Workteriaサイトをご利用ください!
定期的にご本人に合う高額案件を紹介
リモートワークなど自由な働き方ができる案件多数
専属エージェントが契約や請求をトータルサポート