- 前回の回答例
Selection.Cellsを使って、プログラムを開始する前に選択していたセルから計算するようにしておきます。Sub 練習()
Dim x() As Single, wa As Single, i As Integer, n As Integer
i = 1
Do While Selection.Cells(i, 1) <> "" And IsNumeric(Selection.Cells(i, 1))
i = i + 1
Loop
n = i - 1
Selection.Cells(n + 1, 1) = "データの個数"
Selection.Cells(n + 1, 2) = n
ReDim x(n)
For i = 1 To n
x(i) = Selection.Cells(i, 1)
Next i
wa = 0
For i = 1 To n
wa = wa + x(i)
Next i
Selection.Cells(n + 2, 1) = "データの合計"
Selection.Cells(n + 2, 2) = wa
End Sub - 今回作ったプログラムをもう一度実行すると、今度は7番目のセルまで空欄で無いので、データは7個だと誤解して、7番目の"データの個数"も足そうとしてエラーになります。従って、プログラムを「セルが空欄でなく、かつ数字」の間だけ繰り返すように修正しましょう。二つの条件が同時に成立することは And を使って表します。
Sub 練習()
i=1
do while selection.cells(i,1) <> "" And IsNumeric(selection.Cells(i, 1))
i=i+1
loop
n=i-1
selection.cells(n+1,1)="データの個数"
selection.cells(n+1,2)=n
End Subのように書きます。二つの条件の片方が成立すれば良いときには Or を使います。
- ReDimは便利ですが、
dim x() as single
redim x(1)
x(1)=1
redim x(2)
のように途中で変更すると、それまで覚えていたx(1)=1は壊れてしまいます。気をつけてください。 - 簡単なデータの集計法を勉強します。次はA組の身長のデータです。
165 166 167 168 169 170 171 172 173 174 175 課題1
このデータをExcelに貼り付けて、平均を求めてみましょう。平均を求めるには
・データの個数を求めて
・データの合計を計算して
・合計をデータの個数で割ります。
- 次にB組の身長の平均も計算してみましょう。
160 162 164 166 168 170 172 174 176 178 180 課題2
先ほど作った平均を求めるプログラムの後に、散らばり具合を計算するプログラムを書き足しましょう。
・まずそれぞれのデータから、既に求めた平均を引いてそれぞれのデータの右に表示しましょう。160 -10 162 -8 164 -6 166 -4 168 -2 170 0 172 2 174 4 176 6 178 8 180 10
・合計したものをデータの個数で割ります。A組なら10、B組なら40になった筈です。
これを分散と言います。 - B組のばらつきはA組の2倍なのですが、分散は2乗してから足しているために4倍になっています。
そこで分散の平方根を求めましょう。VBAでは平方根はsqr()関数を使います。
分散の平方根のことを標準偏差と言います。
今回はBasicの練習のためにVBAを使って計算しましたが、Excelの関数でも計算できます。
0 件のコメント:
コメントを投稿