【マクロVBA練習問題15】数値の標準偏差を求める!母集団・サンプルの違いも紹介

計算・関数




練習問題と内容について

・練習問題の狙い

このシリーズでは課題を元にマクロVBAを実践することでスキルを身につけることが出来ます。

正直、ソースコード作成については実践あるのみです!

答えのコードについては数例挙げますが、「もっといい答えがある」などの意見があれば

問い合わせから連絡ください!  

こんな問題を作ってほしいなどの意見もお待ちしております!

・練習問題15について

こちらはマクロVBAの知識で少し発展した課題になります。

指定されたセルの数値を元に、母集団・サンプルの標準偏差を求める練習問題となります。

それでは頑張っていきましょう!

練習問題の内容と動作説明

問題内容

セル番地A1からA10までの標準偏差を求める

動作説明

VBAを使用して、セル番地A1からA10までの数値データの標準偏差を求めます。

この問題では、与えられたセル範囲のデータを取得し、その標準偏差を計算して結果を表示する必要があります。

ヒント


以下のヒントを参考にして解答コードを作成してみてください。

・ヒントその1

セルに値を表示するためには、Rangeオブジェクトを使用します。
セル番地を指定して該当するセルオブジェクトを取得し、計算する必要があります。

セル範囲を指定するには、Range(“D1:D5”)というように範囲の開始セルと終了セルを指定します

・ヒントその2

取得したデータを使って標準偏差を計算するためには、VBAの統計関数を使用する必要があります。

例えば、WorksheetFunction.StDev()関数を使用して、セル範囲のデータの標準偏差を計算することができます。

・ヒントその3

標準偏差には「母集団」として算出する方法と「サンプル」として算出する方法があります。


すべてのデータがある場合はSTDEV.P関数の「母集団」で計算しますが

データを抜き取って計算することになるため、STDEV.S関数の「標本(サンプル)」で計算することになります。

 

 

 

 

使い分けは下記の通りです。

母集団で標準偏差:STDEV.P(対象データ)
標本で標準偏差:STDEV.S(対象データ)

以上のヒントを参考に課題に取り組んでみてください!

 

最新・便利な機能を搭載したExcel・officeを試しませんか?
Excel 2013以下を使用している方はサポートが終了しているので注意が必要です!
【最新2023年】Excel・Officeの価格比較!あなたに合ったオススメの製品の選定方法から購入 ► 独学エクセル塾 (dokugakuexcel.com)
 

 

解答コード

では回答を見ていきましょう!

・回答その①

Sub Exercise15to1()
Dim rng As Range
Dim stdev As Double

Set rng = Range(“A1:A10”)
stdev = WorksheetFunction.stdev(rng )

Range(“C2”).Value = stdev
End Sub

上記のコードは、セル番地A1からA10までのデータの標準偏差を求めるVBAのマクロです。

解答コードでは、Rangeオブジェクトを使用してセル範囲を指定し、WorksheetFunction.StDev()関数を使用して標準偏差を計算します。

計算結果はstdev変数に格納され、C2に表示されます。

それでは実行してみましょう。
結果はこのようになります。

 

A1からA10の数値の標準偏差は「8.61…」ということがわかりました。

・回答その②

Sub Exercise15to2()

Dim sum As Double
Dim mean As Double
Dim variance As Double
Dim stdev As Double

Dim rng As Range
Set rng = Range(“A1:A10”)

Dim cell As Range


For Each cell In rng
 sum = sum + cell.Value
Next cell

mean = sum / rng .Cells.count

For Each cell In rng
 variance = variance + (cell.Value – mean) ^ 2
Next cell

variance = variance / rng .Cells.count
stdev = Sqr(variance)

Range(“C2”).Value = stdev

End Sub

 

上記のコードは、セル番地A1からA10までのデータの標準偏差を求める別の解答例です。

この解答コードでは、ループを使用してセルの値の合計、平均値、分散を計算し、その後分散から標準偏差を求めます。

使用しないとは思いますが、こちらが標準偏差の計算方法の基礎となります。

 

 

 

母集団とサンプルの違いと計算方法

標準偏差には母集団・サンプルの計算方法があります。
それでは違いと使用方法を見てみましょう。

・標準偏差の母集団とサンプルとは

標準偏差には「母集団」として算出する方法と「サンプル」として算出する方法があります。


すべてのデータがある場合はSTDEV.P関数の「母集団」で計算しますが

データを抜き取って計算することになるため、STDEV.S関数の「標本(サンプル)」で計算することになります。

・母集団の計算方法

まず母集団の計算方法を紹介します。ソースコードはこちらです。

母集団を計算するときは「StDevP関数」を使用します

Sub PopulationStDev()
 Dim rng As Range
 Dim stdev As Double

Set rng = Range(“A1:A10”)
stdev = WorksheetFunction.StDevP(rng )

Range(“C2”).Value = stdev

End Sub

上記のコードは、セル番地A1からA10までのデータの母集団の標準偏差を求めるVBAのマクロです。

解答コードでは、WorksheetFunction.StDevP()関数を使用してセル範囲のデータの母集団の標準偏差を計算します。

・サンプルの計算方法

次にサンプルの計算方法を紹介します。ソースコードはこちらです。

サンプルを計算するときは「StDev関数」を使用します

Sub SampleStDev()
Dim rng As Range
Dim stdev As Double

Set rng = Range(“A1:A10”)
stdev = WorksheetFunction.stdev(rng )

Range(“C2”).Value = stdev
End Sub

上記のコードは、セル番地A1からA10までのデータのサンプルの標準偏差を求めるVBAのマクロです。

解答コードでは、WorksheetFunction.StDev()関数を使用してセル範囲のデータのサンプルの標準偏差を計算します。

必要な知識

この問題を解くためには、以下の基本的な知識が必要です。

統計関数の使用

標準偏差を求めるためには、統計関数を使用する必要があります。

VBAでは、WorksheetFunctionオブジェクトを使用してExcelの統計関数を呼び出すことができます。

この問題では、StDev()またはStDevP()関数を使用してセル範囲の標準偏差を計算します。

WorksheetFunctionの使用

積を求めるためには、WorksheetFunctionが必要です。 下記参考記事で紹介しています!

まとめ

 

練習問題を通じて、VBAのスキルを向上させることができました。

より高度な問題に挑戦することで、より複雑な操作や処理を実現できるようになるでしょう。

これらの練習問題を通じて、VBAの理解を深め、Excelの自動化やデータ処理の効率化に役立てることができます。
継続的な学習と実践を通じて、VBAのスキルを磨いていきましょう。

 

以上が練習問題15となります。お疲れ様でした!