【Excel VBA】If Elseとは違う条件式(Select Case)について
エンジニアのIMMRです。Excel VBAの条件式には、以前に説明したExcel VBA 条件式(If Else)とこれから説明するSelect Caseの二つあります。1.従来のIf Else条件式If Elseは条件に合った時は処理Aを、条件に合わなかったら処理Bを実行します。では、下記のようなデータがあり、複数の条件があるとします。If Elseを使用して作成すると2種類の方法が浮かぶと思
Workteria(ワークテリア)では難易度の高いものから低いものまで、スキルや経験に合わせた案件を多数揃えています。会員登録は無料ですので、ぜひ会員登録してご希望の案件を探してみてください!
フリーランス/正社員のエンジニアとして活躍するには、ご自身のスキルや経験に合わせた仕事を選ぶことが大切です。ご希望の案件がみつからない場合はお気軽にお問い合わせください!ユーザ満足度の高いキャリアコンサルタントが在籍していますので、希望条件や悩み事などなんでもご相談ください。ご希望にピッタリの案件をご紹介させていただきます。
エンジニアのIMMRです。
下記のようなデータがあり、売り上げ数が100個数以上の場合は、結果に〇 そうでない場合は、×を記載したいとします。
そういった場合、条件式を使用して、処理を条件によって変える必要があります。
図1 ブック(値が記載されているもの)
しかし、(If Else)だけでなく、もう一つ条件を追加したい時があると思います。
その時は、ElseIfを使用して行うことが出来ます。その方法を説明します。
条件によって、処理を分けるのが条件式です。その中の(If Else)や(ElseIf)は、下記のような3パターンがあります。
・条件に満たされた場合のみ処理を行います。
・条件に満たされた場合と満たされなかった場合で処理を分けます。
・条件に満たされた場合と、満たされなかった場合でもう一つの条件に満たされた場合と、それ以外で処理を分けます。
条件に満たされた場合のみ処理①を行います
図2 処理の流れ(Ifのみ)
条件に満たされた場合は処理①、満たされなかった場合は処理②を行い、処理を分けます
図3 処理の流れ(IfとElse)
条件に満たされた場合処理①、満たされなかったがもう一つの条件に満たされた場合処理②、それ以外は処理③を行い、処理を分けます。
図4 処理の流れ(IfとElseとElse If)
条件に満たされた場合のみ処理を行います
If 条件 Then
処理①
End If
下記のように1行で書くことも出来ます
If 条件 Then 処理①
条件に満たされた場合と満たされなかった場合で処理を分けます
If 条件 Then
処理①
Else
処理②
End If
条件に満たされた場合と、満たされなかった場合でもう一つの条件に満たされた場合と、それ以外で処理を分けます
If 条件A Then
処理①
ElseIf 条件B Then
処理②
Else
処理③
End If
※ElseIfは複数記載出来ます。
比較演算子は文字列や数値を比較するための演算子です。
図5 演算子の種類と結果
Likeの演算子では下記のパターンによる比較が出来ます。
図6 Like演算子の種類の結果
入力例
If オブジェクト1 Is オブジェクト2 Then
処理①
End If
If 文字列 Like "あ*" Then ※数値でも出来ます
処理①
End If
If 文字列 Like "#" Then
処理①
End If
If 数値 Like "??" Then
処理①
End If
論理演算子は複数の式の条件に対して、真偽を評価する演算子です。
図7 演算子の種類と意味
図8 演算子に対する結果
入力例
If 条件A And 条件B Then
処理①
End If
If 条件A Or 条件B Then
処理①
End If
If 条件A Xor 条件B Then
処理①
End If
If 条件A Eqv 条件B Then
処理①
End If
If 条件A Imp 条件B Then
処理①
End If
If Not 条件A Then
処理①
End If
では、実際にIf ElseにElseIfを追加して処理の分断を増やしていきます。
下記のような表がブックに記載されています。
売り上げ数をもとに条件によって、結果を記載していきます。
図9 ブック(処理前)
条件は、
・売り上げ数が100以上ならA
・売り上げ数が90より大きくて100より小さいならB
・売り上げ数が90以下ならC
とします。
サンプルコードは以下になります。
サンプルコード
Sub Test5() Dim i As Long For i = 4 To 15 If Cells(i, "B") >= 100 Then Cells(i, "C") = "A" ElseIf Cells(i, "B") > 90 And Cells(i, "B") < 100 Then Cells(i, "C") = "B" Else Cells(i, "C") = "C" End If Next i End Sub
上記、サンプルコードを実行し、
If ElseにElseIfを追加して処理の分断が出来ているか確認します。
図10 ブック(処理後)
条件で設定したとおり、
「売り上げ数が100以上ならA」「売り上げ数が90より大きくて100より小さいならB」「売り上げ数が90以下ならC」となっています。
If ElseにElseIfを追加して処理の分断を増やすことが出来ました。
そのような方はぜひ、Workteriaサイトをご利用ください!
定期的にご本人に合う高額案件を紹介
リモートワークなど自由な働き方ができる案件多数
専属エージェントが契約や請求をトータルサポート