ループによる条件判断での計算をする方法について説明します。今回はSelect文とFor~Next文を使用した足し算処理について説明します。
例題
会社名欄(A列)に”B社”又は”D社”が入力されている場合は総務部人員(B列)と経理部人員(C列)を足し算し結果欄(D列)に表示し、それ以外が入力されている場合は何もしないプログラミング方法となります。
[実行前]:
A列3行目~6行目に会社名、B列3行目~6行目に総務部人員、C列3行目~6行目に経理部人員が入力されている。
[実行後]:
会社名欄に”B社”又は”D社”が入力されている場合は総務部人員と経理部人員の足し算結果をD列の結果欄に表示し、それ以外が入力されている場合は何もしません。
プログラミング
プログラミングは以下の通りとなります。
[記述例]:
Sub サンプル()
Dim 行 As Double
For 行 = 3 To 6
Range("D" & 行) = ""
Select Case Trim(Range("A" & 行))
Case "B社"
Range("D" & 行) = Range("B" & 行) + Range("C" & 行)
Case "D社"
Range("D" & 行) = Range("B" & 行) + Range("C" & 行)
End Select
Next
End Sub
最初に変数:行を指定します。
次にFor~Next文を使用して変数:行に3~6までの数値を順次セットしながらループさせます。
このループによりA列の3行目~6行目に入力されている会社名を条件判断します。
今回の例題では、A列に入力されている会社名が”B社”又は”D社”の場合、B列に入力されている総務部人員とC列に入力されている経理部人員を足し算するため、条件判断にSelect文を使用します。
条件判断セルはA列となるため、Trim(Range("A" & 行))と記述します。Trim関数は文字列前後にスペース文字が入っていた場合に取り除くための指定となります。
入力されたデータが”B社”又は”D社”であるか否かの判断をするため、Case "B社"・Case "D社"を各々指定します。
条件が一致した場合には足し算し、結果をD列に表示するためRange("D" & 行) = Range("B" & 行) + Range("C" & 行)と記述します。
ループ内の処理内容を説明すると、
---------------------------------
まず最初に変数:行に3がセットされ、A3セルの会社名が”B社”又は”D社”であるか否かを判断します。A3セルには”A社”が入力されているため、足し算は行いません。
---------------------------------
次に変数:行に4がセットされ、A4セルの名前が”B社”又は”D社”であるか否かを判断します。A4セルには”B社”が入力されているため、B4セルの値(20)とC4セルの値(2)が足し算され、D4セルには結果の22(20+2=22)が表示されます。
---------------------------------
次に変数:行に5がセットされ、A5セルの名前が”B社”又は”D社”であるか否かを判断します。A5セルには”C社”が入力されているため、足し算は行いません。
---------------------------------
次に変数:行に6がセットされ、A6セルの名前が”B社”又は”D社”であるか否かを判断します。A6セルには”D社”が入力されているため、B6セルの値(50)とC6セルの値(10)が足し算され、D6セルには結果の60(50+10=60)が表示されます。
---------------------------------
との意味になります。
ダウンロード
上記サンプルプログラムを使用したい場合は、こちらからダウンロードして下さい。