教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について説明していきます。

【ExcelVBA プログラミング】(計算10)ループによる条件判断での計算をする(IF文とDo~Loop文による計算)

       f:id:m_kbou:20200421093751p:plain

ループによる条件判断での計算をする方法について説明します。今回はIF文とDo~Loop文を使用した足し算処理について説明します。

 

【目次】

 

例題

例題は、<実行>ボタンにVBAマクロが登録されており、ボタンをクリックする事でループによる足し算処理を実行します。会社名欄(A列の3行目~6行目セル)に”B社”が入力されている場合は総務部人員と経理部人員を足し算し、”B社”以外が入力されている場合は何もしないプログラミング方法となります。

[実行前]:

A列3行目~6行目に会社名、B列3行目~6行目に総務部人員、C列3行目~6行目に経理部人員が入力されている。

f:id:m_kbou:20200428062623p:plain

[実行後]:

会社名欄に”B社”が入力されている場合は総務部人員と経理部人員の足し算結果をD列の結果欄に表示し、”B社”以外が入力されている場合は何もしません。

f:id:m_kbou:20200428062637p:plain

  

プログラミング

プログラミングは以下の通りとなります。

[記述例]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。また、ボタンにプログラム内容を割り当てるには、VBAをボタンに割り当てるを参考にして下さい。

-------------------------------------------------

Sub サンプル()

    Dim 行 As Double
   
    行 = 3
   
    Do Until Trim(Range("A" & 行) = "")
        Range("D" & 行) = ""
        If (Range("A" & 行) = "B社") Then
            Range("D" & 行) = Range("B" & 行) + Range("C" & 行)
        End If
        行 = 行 + 1
    Loop
   
End Sub

-------------------------------------------------

最初に変数:行を指定します。

次に変数:行には初期値として3をセットします。

最後にDo~Loop文を使用して変数:行に数字を1づつ足してループさせます。

ループはA列のセルにデータが入力されていない場合に抜ける事とするため、Trim(Range("A" & 行)) = ""と記述します。Trim関数は文字列前後にスペース文字が入っていた場合に取り除くための指定となります。

このループによりA列の3行目~6行目に入力されている会社名を条件判断します。

条件判断にはIF文を使用し、A列のセルに入力したデータが”B社”であるか否かの判断をするため、Trim(Range("A" & 行)) = "B社"と記述します。

条件が一致した場合はB列及びC列に入力されている会社毎の総務部人員と経理部人員を足し算し、結果をD列に表示するため、Range("D" & 行) = Range("B" & 行) + Range("C" & 行)と記述します。

ループ内の処理内容を説明すると、

「最初のループでは変数:行に3がセットされているので、A3セルの会社名が”B社”であるか否かを判断します。A3セルには”A社”が入力されているため、足し算は行いません。その後に変数:行に1を足し込みます。この足し込みにより変数:行の値は3+1=4となります。

---------------------------------

次のループでは変数:行に4がセットされているので、A4セルの会社名が”B社”であるか否かを判断します。A4セルには”B社”が入力されているため、B4セルの値(20)とC4セルの値(3)を足し算し、D4セルに結果の22(20+2=22)を表示します。その後に変数:行に1を足し込みます。この足し込みにより変数:行の値は4+1=5となります。

---------------------------------

次のループでは変数:行に5がセットされているので、A5セルの会社名が”B社”であるか否かを判断します。A5セルには”C社”が入力されているため、足し算は行いません。その後に変数:行に1を足し込みます。この足し込みにより変数:行の値は5+1=6となります。

---------------------------------

次のループでは変数:行に6がセットされているので、A6セルの会社名が”B社”であるか否かを判断します。A6セルには”D社”が入力されているため、足し算は行いません。その後に変数:行に1を足し込みます。この足し込みにより変数:行の値は6+1=7となります。

---------------------------------

次のループでは変数:行に7がセットされているので、A7セルにデータが入力されているか判定します。A7セルにはデータが入力されていないため、ループを抜ける事になります。」

との意味になります。

※上記のサンプルでは足し算を例に説明しましたが、その他引き算掛け算割り算等の計算も同じ様に使用する事ができます。

 

ダウンロード

上記サンプルプログラムを使用したい場合は、こちらからダウンロードして下さい。

1drv.ms