『Excel』 VBAでちょっと便利!?(その5)

2018年10月19日 仕事のこだわり

Excelでのプログラミング5回目です。

今回は、同じ計算式で各行の値を計算する(繰り返し)方法のお話しです。

 

前回と同じ表を用意してください。

 

E列(5列目)の「金額」欄に、C列(3列目)の「単価」×D列(4列目)の「数量」の計算結果を入力します。

 

【手順】

  1. 計算する範囲を決めます。
    今回計算する行は3行目から7行目までですが、最下行が増えてもいいように自動で取得する手順を入れます。
  2. 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構文(繰り返し)はよく使うので覚えておいてください。

 

次回は、別の繰り返し構文のお話です。

では、また。

Copyright © syshan.jp all rights reserved.