検索

キーワード


【Excel VBA】If ElseにElseIfを追加して処理の分断を増やす方法

  • 公開日:2020-05-13 18:29:29
  • 最終更新日:2021-03-06 00:13:07

エンジニアのIMMRです。

下記のようなデータがあり、売り上げ数が100個数以上の場合は、結果に〇 そうでない場合は、×を記載したいとします。

そういった場合、条件式を使用して、処理を条件によって変える必要があります。


図1 ブック(値が記載されているもの)

If Else文を使ったマクロを実行するサンプルデータ


しかし、(If Else)だけでなく、もう一つ条件を追加したい時があると思います。

その時は、ElseIfを使用して行うことが出来ます。その方法を説明します。


1.条式(If ElseとElseIf)について

条件によって、処理を分けるのが条件式です。その中の(If Else)や(ElseIf)は、下記のような3パターンがあります。

 ・条件に満たされた場合のみ処理を行います。

 ・条件に満たされた場合と満たされなかった場合で処理を分けます。

 ・条件に満たされた場合と、満たされなかった場合でもう一つの条件に満たされた場合と、それ以外で処理を分けます。


条件に満たされた場合のみ処理①を行います

図2 処理の流れ(Ifのみ)

条件を満たした場合のみ処理を行う、If Else文のフローチャート


条件に満たされた場合は処理①たされなかった場合は処理②を行い、処理を分けます

図3 処理の流れ(IfとElse)

条件を満たした場合と満たさなかった場合で処理を分ける、If Else文のフローチャート


条件に満たされた場合処理①満たされなかったがもう一つの条件に満たされた場合処理②それ以外は処理③を行い、処理を分けます。

図4 処理の流れ(IfとElseとElse If)

条件に満たされた場合と、満たされなかった場合でもう一つの条件に満たされた場合と、それ以外で処理を処理を分ける、If Else文のフローチャート


2.If ElseにElseIfを追加して処理の分断を増やす方法

条件式


条件式の方法①

条件に満たされた場合のみ処理を行います

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演算子種類の結果

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 演算子に対する結果

A,Bの真偽に対応した論理演算式の結果


入力例

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


3.If ElseとElseIfを使用したサンプルコード

では、実際に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


4.If ElseとElseIfを使用したサンプルコードの実行

上記、サンプルコードを実行し、

If ElseにElseIfを追加して処理の分断が出来ているか確認します。


図10 ブック(処理後)

ブック(処理後)


条件で設定したとおり、

売り上げ数が100以上ならA」「売り上げ数が90より大きくて100より小さいならB」「売り上げ数が90以下ならC」となっています。


If ElseにElseIfを追加して処理の分断を増やすことが出来ました。


【著者】

Imamura

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

よく読まれている記事