Web Analytics Made Easy - StatCounter

Economics Of TEC

RPA,経済学,IT技術などに関する情報を発信しています。

【Excel VBA】複数の条件を指定して処理を行う方法

f:id:WillSpecter:20200810141628j:plain

 やりたいこと

条件によって処理を変更する

Excelで下記のようなデータがあるとします。

f:id:WillSpecter:20200815142025p:plain

備考を参照して、

速達の場合は配送料を500円

普通の場合はを300円

それ以外の場合は800円

として配送料の合計を求めるということをVBAを使ってやりたいと思います。

f:id:WillSpecter:20200815142506p:plain

コードと解説は以下の通りです。
VBA コード】

Sub 配送料計算()
    Dim 行番号 As Integer      '整数型の変数を設定
    Dim 速達料金 As Currency   '通貨型の変数を設定↓
    Dim 普通料金 As Currency
    Dim その他料金 As Currency
    Dim 配送料合計 As Currency
    
    '初期値を設定↓
    行番号 = 2
    速達料金 = 500
    普通料金 = 300
    その他料金 = 800
    配送料合計 = 0
    
    '空白になるまで繰り返す
    Do Until Cells(行番号, 4).Value = ""
    
        'デバッグ↓
        Debug.Print "行番号:" & 行番号
        Debug.Print "品名:" & Cells(行番号, 2)
        Debug.Print "備考:" & Cells(行番号, 6)
        
        
        If Cells(行番号, 6).Value = "速達" Then
            配送料合計 = 配送料合計 + 速達料金
        ElseIf Cells(行番号, 6).Value = "普通" Then
            配送料合計 = 配送料合計 + 普通料金
        Else
            配送料合計 = 配送料合計 + その他料金
        End If
        行番号 = 行番号 + 1      
    Loop
    
    '対象セルの値が空白以外
    If Cells(行番号, 5).Value <> "" Then
        行番号 = 行番号 + 1
    End If
    Cells(行番号, 2).Value = "配送料"
    Cells(行番号, 5).Value = 配送料合計
End Sub

ポイント

 定数の宣言と値の設定は最初にする

変数の宣言と値の設定は、プロシージャの先頭で行うようにします。

マクロの動作的にはどこで設定しても問題ありませんが、コードの途中で変数を宣言したり、値を設定すると可読性が低くなってしまうことが多いです。

複数の条件を指定しても「End if」は1つだけ

If文の中で複数条件を設定して「ElseIf」を使用した場合でも「End If」は最後に1つだけ記述することに注意が必要です。

End Ifは省略することも可能

条件式や処理の内容が短い時は、If~Thenステートメントをまとめて入力することができます。

 

例えば「A=1であればX=1、Aが1以外であればX=0」を表すときは

If A = 1 Then X = 1 Else X = 0

と記述することができます。

 

省略した際は「End If」や「ElseIf」は使用することができないので注意が必要です。

Debug.Printを活用する

Debug.Printを使うと、マクロの実行中にセルや変数の内容をVBEのイミディエイトウィンドウに表示することができます。

 

表示タブ→イミディエイトウィンドウクリックで表示できるのでぜひ上手く活用してみてください。

Select Caseで条件を判定する

今回は「ElseIf」「Else」を使って複数条件の指定を行いましたが、

Select Caseを使用することでより簡単に条件を指定することが可能です。

 

先ほどのコードのIf文をSelect Caseで書き換えると以下のようになります。

        Select Case Cells(行番号, 6).Value
            Case "速達"
                配送料合計 = 配送料合計 + 速達料金
            Case "普通"
                配送料合計 = 配送料合計 + 普通料金
            Case Else
                配送料合計 = 配送料合計 + その他料金
        End Select

ひとこと

条件分岐は一番よく使うので、書き方はしっかりと身に付けておきたいです。

 

UipathでもIf文やSelect Caseは頻繁に使用するので、使い方はすぐに理解することができました(^-^)

 

できるシリーズはフルカラーでかなり細かいところまで画像を使って解説してあるのでオススメです!

 
他にもVBAの使い方を紹介しているので、ぜひ参考にしてみてください!(^^)!