『Excel』 VBAでちょっと便利!?(その5)
Excelでのプログラミング5回目です。
今回は、同じ計算式で各行の値を計算する(繰り返し)方法のお話しです。
前回と同じ表を用意してください。
E列(5列目)の「金額」欄に、C列(3列目)の「単価」×D列(4列目)の「数量」の計算結果を入力します。
【手順】
- 計算する範囲を決めます。
今回計算する行は3行目から7行目までですが、最下行が増えてもいいように自動で取得する手順を入れます。 - 3行目から最下行目まで、「単価」×「数量」を計算して「金額」に値を入れます。
■最下行を取得する方法
2行2列目の「商品名」にカーソルがある状態で、[Ctrl]+[↓]を押すと7行2列目の「商品E」にカーソルが移動します。移動した先の行番号を取得すれば表の最下行がわかります。
これをプログラムで記述すると、
Cells(2, 2).End(xlDown).Row
となります。
※注意
途中に空白のセルがある場合は、空白セルの1行上の行を取得するので注意してください。
■繰り返し
同じ式を繰り返すには、
For 変数=初期値 to 最終値
計算式(処理)
Next
という構文を使います。
「For」から「Next」の間の計算式を、変数の値を初期値から最終値まで1増やしながら実行します。(今回は1回目は変数の値に3を入れて計算式を実行し、次に変数の値を4にして、次に5にして...7にして計算式を実行して終わり)
では、実際にプログラムを書いてみましょう。
「開発」タブから「Visual Basic」を選択し、VBEを開いてください。
「挿入」-「標準モジュール」を選択し、プログラムを入力します。
※前回のブックを使用する場合は、VBEを開いた時点で「Module1」が開いていると思います。
以下のプログラムを入力してください。
———————————————————————–
Sub test5()
Dim long_LastRow As Long
Dim gyou As Integer
long_LastRow = Cells(2, 2).End(xlDown).Row
For gyou = 3 To long_LastRow
Cells(gyou, 5).Value = Cells(gyou, 3).Value * Cells(gyou, 4).Value
Next
End Sub
———————————————————————–
【各プログラム行の説明】
・Dim long_LastRow As Long
・Dim gyou As Integer
⇒変数[long_LastRow]をLong型として、変数[gyou]をInteger型として使う宣言
Long型は「長整数型」で、-2,147,483,648 ~ 2,147,483,647までの整数を入れることができ、
Integer型は「整数型」で、-32,768 ~ 32,767までの整数を入れることができます。
※ちなみに、Excel2003で使えるシートの最下行は65536で、Excel2007以降では1048576です。共に整数型の変数には入れることはできません。
・long_LastRow = Cells(2, 2).End(xlDown).Row
⇒変数[long_LastRow]に、2行2列目セルから下へたどって最下行の行番号を代入する
※今回はlong_LastRowの値は7になります。
・For gyou = 3 To long_LastRow
~
・Next
⇒For文で、変数[gyou]の値を3からlong_LastRowの値になるまで1増やしながら、Nextまでの処理を実行する
・Cells(gyou, 5).Value = Cells(gyou, 3).Value * Cells(gyou, 4).Value
⇒セル([gyou]行目、5列目)に、セル([gyou]行目、3列目)×セル([gyou]行目、4列目)の計算結果を入れる
今回は最下行を自動で取得する処理を入れましたが、
繰り返し文を使うと、前回(その4)では5行あった計算式が3行で済みます。
(100行あっても3行で済みます)
~~~~~~~~~~~~~~~~~~~~~~~~~~
Cells(3, 5).Value = Cells(3, 3).Value * Cells(3, 4).Value
Cells(4, 5).Value = Cells(4, 3).Value * Cells(4, 4).Value
Cells(5, 5).Value = Cells(5, 3).Value * Cells(5, 4).Value
Cells(6, 5).Value = Cells(6, 3).Value * Cells(6, 4).Value
Cells(7, 5).Value = Cells(7, 3).Value * Cells(7, 4).Value
~~~~~~~~~~~~~~~~~~~~~~~~~~
↓↓↓↓↓↓↓↓↓↓↓↓
~~~~~~~~~~~~~~~~~~~~~~~~~~
For gyou = 3 To 7
Cells(gyou, 5).Value = Cells(gyou, 3).Value * Cells(gyou, 4).Value
Next
~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub Test5() からEnd Subの間にカーソルを合わせて実行ボタンをクリックしてください。
金額欄に計算結果が入力されました。
For to next構文(繰り返し)はよく使うので覚えておいてください。
次回は、別の繰り返し構文のお話です。
では、また。