トップ > Excelマクロ > 2-2 平均を計算する(AVERAGE関数)
【今回できるようになること】
・プログラミングでの、掛け算と割り算の書き方
・小数値も入る変数の定義
・変更に強くするスマートなコーディング
こんにちはー!!
それでは始めていきましょう!
突然ですが質問です。下のような場合の、生徒5人の“数学”の点数の“平均値”を、セルE2に入れたい場合、あなたならどうしますか?
勘の良い方は、「前回求めた合計値を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章で解説するので、今は気にしなくても大丈夫です!
さて、これができたら、前回同様、実行ボタンを配置してマクロを実行すると、平均値が計算されます!
もし、生徒の人数が500人になったとしても、
「For i = 1 To 5」を「For i = 1 To 500」に、
「ave = sum / 5」を「ave = sum / 500」に変えれば、問題なく対応できますね!
ここまでできたら、さらに一歩先のコーディングを目指しましょう。
「For i = 1 To 5」を「For i = 1 To 500」に、
「ave = sum / 5」を「ave = sum / 500」に変える。
と言いましたが、ちょっと面倒だと思いませんか?
「5を500に変える」という点では全く同じ作業なので、もっと簡潔に書ける気がします。
プログラムを以下のように書き換えてみましょう。
※コピペ用↓
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」に変えるだけで済みますね。
このように、
「後から変更する可能性がある値は、一括で管理できるように共通の文字で置く」
という考え方は、スマートなコーディングをするうえで大切だと私は思います♪
今回はこれで終了です!
お疲れ様でした。また次回でお会いしましょう!
【今回のまとめ】
・プログラミングでの掛け算と割り算は「*」と「/」で記述する
・「Dim 変数名 As Double」で、小数値も入る変数を定義できる
・後から変更する可能性がある値は、一括で管理できるように共通の文字で置くと便利