Junchi Lab

トップ > Excelマクロ > 2-2 平均を計算する(AVERAGE関数)

2-2 平均を計算する(AVERAGE関数)


【今回できるようになること】

・プログラミングでの、掛け算と割り算の書き方
・小数値も入る変数の定義
・変更に強くするスマートなコーディング


vba2_2_1


こんにちはー!!
それでは始めていきましょう!
突然ですが質問です。下のような場合の、生徒5人の“数学”の点数の“平均値”を、セルE2に入れたい場合、あなたならどうしますか?


vba2_2_2


勘の良い方は、「前回求めた合計値を5で割れば良いんじゃない?」と気づいたはず。
ズバリ、その通りです!!

プログラミングでは、割り算をしたいときに「÷」ではなく「/」を使うことに気を付けて、
前回作ったコードを書き換えてみましょう!

ちなみに掛け算は「×」ではなく「*」を使います!


vba2_2_5


※コピペ用↓

Sub Goukei2()

 Dim sum As Integer
 sum = 0

 Range("C3").Select

 Dim i As Integer

 For i = 1 To 5
  sum = sum + Selection.Value
  Selection.Offset(2, 0).Select
 Next i

'-----↓変更点↓-----

 Dim ave As Double '平均値を代入する変数「ave」を定義

 ave = sum / 5 '「ave」に「sum÷5」を代入

'-----↑変更点↑-----

 Range("E2").Value = ave

End Sub


上のコードでは、新たに平均値を入れる変数「ave」を定義して、
「ave」に「sum÷5」を代入しています。

ちなみに、前回は「Dim 変数名 As Integer」だった変数を定義するコードが、
今回は「Dim 変数名 As Double」になっています。

これは、「Integer」で定義された変数は整数値しか格納できませんが、
「Double」で定義された変数は小数値でも格納できるという違いがあります。

「ave」に入れるのは平均値なので、答えが小数値になるかもしれません。
ということで今回は「Double」で定義しています。

このような「Integer」や「Double」のようなものを「型」と呼びますが、
詳しくは第3章で解説するので、今は気にしなくても大丈夫です!


vba2_2_4


さて、これができたら、前回同様、実行ボタンを配置してマクロを実行すると、平均値が計算されます!

1-4 マクロを動かす 参照

vba2_2_3


もし、生徒の人数が500人になったとしても、
「For i = 1 To 5」を「For i = 1 To 500」に、
「ave = sum / 5」を「ave = sum / 500」に変えれば、問題なく対応できますね!


vba2_1_7


ここまでできたら、さらに一歩先のコーディングを目指しましょう。

「For i = 1 To 5」を「For i = 1 To 500」に、
「ave = sum / 5」を「ave = sum / 500」に変える。

と言いましたが、ちょっと面倒だと思いませんか?

「5を500に変える」という点では全く同じ作業なので、もっと簡潔に書ける気がします。

プログラムを以下のように書き換えてみましょう。


vba2_2_6


※コピペ用↓

Sub Goukei2()

'-----↓変更点↓-----
 Dim n As Integer '生徒の人数
 n = 5
'-----↑変更点↑-----

 Dim sum As Integer
 sum = 0

 Range("C3").Select

 Dim i As Integer

'-----↓変更点↓-----
 For i = 1 To n '1からnまで(つまりn回)繰り返す
'-----↑変更点↑-----

  sum = sum + Selection.Value
  Selection.Offset(2, 0).Select
 Next i

 Dim ave As Double

'-----↓変更点↓-----
 ave = sum / n '「ave」に「sum÷n」を代入
'-----↑変更点↑-----

 Range("E2").Value = ave

End Sub


修正版では、最初に生徒の人数を「n」という変数で定義して、
元々5が入っていた場所に「n」を組み込んでいます。

こうすることで、生徒の人数を500人に変更したいときに、
「n = 5」の部分を「n = 500」に変えるだけで済みますね。

このように、
「後から変更する可能性がある値は、一括で管理できるように共通の文字で置く」
という考え方は、スマートなコーディングをするうえで大切だと私は思います♪


vba2_1_7


今回はこれで終了です!

お疲れ様でした。また次回でお会いしましょう!


【今回のまとめ】

・プログラミングでの掛け算と割り算は「*」と「/」で記述する
・「Dim 変数名 As Double」で、小数値も入る変数を定義できる
・後から変更する可能性がある値は、一括で管理できるように共通の文字で置くと便利


前回 2-1 合計を計算する(SUM関数)
次回 2-3 条件分岐(IF関数)