トップ > 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」で、小数値も入る変数を定義できる
                        ・後から変更する可能性がある値は、一括で管理できるように共通の文字で置くと便利