【Excel VBA】基本統計量の計算とヒストグラムの表示
はじめに
Excel VBAを使って基本統計量(平均値・中央値・標準偏差・最小値・最大値)を計算し、 ヒストグラムを作成する方法について初心者向けに解説します。
平均値の計算
平均値(算術平均)は、データの合計をデータ数で割ることで求められます。
Function CalcAverage(rng As Range) As Double
Dim total As Double, count As Integer
Dim cell As Range
total = 0
count = 0
For Each cell In rng
total = total + cell.Value
count = count + 1
Next cell
CalcAverage = total / count
End Function
中央値の計算
中央値はデータを昇順に並べたときに中央に位置する値です。
Function CalcMedian(rng As Range) As Double
Dim arr() As Double, i As Integer, j As Integer, temp As Double
Dim n As Integer
n = rng.Count
ReDim arr(1 To n)
i = 1
For Each cell In rng
arr(i) = cell.Value
i = i + 1
Next cell
' バブルソートで昇順ソート
For i = 1 To n - 1
For j = i + 1 To n
If arr(i) > arr(j) Then
temp = arr(i)
arr(i) = arr(j)
arr(j) = temp
End If
Next j
Next i
' 中央値を計算
If n Mod 2 = 0 Then
CalcMedian = (arr(n / 2) + arr(n / 2 + 1)) / 2
Else
CalcMedian = arr((n + 1) / 2)
End If
End Function
標準偏差の計算
標準偏差はデータの散らばりを示す指標で、次の式で計算されます。
\[ \sigma = \sqrt{ \frac{1}{n} \sum_{i=1}^{n} (x_i – \mu)^2 } \]
Function CalcStdDev(rng As Range) As Double
Dim avg As Double, sumSq As Double, count As Integer
Dim cell As Range
avg = CalcAverage(rng)
sumSq = 0
count = 0
For Each cell In rng
sumSq = sumSq + (cell.Value - avg) ^ 2
count = count + 1
Next cell
CalcStdDev = Sqr(sumSq / count)
End Function
最小値と最大値の計算
最小値と最大値はデータセットの中でそれぞれ最も小さい値と大きい値です。
Function CalcMin(rng As Range) As Double
Dim minVal As Double
Dim cell As Range
minVal = rng.Cells(1, 1).Value
For Each cell In rng
If cell.Value < minVal Then minVal = cell.Value
Next cell
CalcMin = minVal
End Function
Function CalcMax(rng As Range) As Double
Dim maxVal As Double
Dim cell As Range
maxVal = rng.Cells(1, 1).Value
For Each cell In rng
If cell.Value > maxVal Then maxVal = cell.Value
Next cell
CalcMax = maxVal
End Function
ヒストグラムの作成
VBAを使ってExcelでヒストグラムを作成する方法を説明します。
Sub CreateHistogram()
Dim chartObj As ChartObject
Dim ws As Worksheet
Set ws = ActiveSheet
' データ範囲を選択(例: A1:A20)
ws.Range("A1:A20").Select
' ヒストグラムの作成
Set chartObj = ws.ChartObjects.Add(Left:=100, Width:=375, Top:=50, Height:=225)
With chartObj.Chart
.SetSourceData Source:=ws.Range("A1:A20")
.ChartType = xlColumnClustered
End With
End Sub
まとめ
この記事では、VBAを使って基本統計量(平均値、中央値、標準偏差、最小値、最大値)を計算し、 ヒストグラムを作成する方法を紹介しました。これを活用してデータ分析を効率化してください。