【Excel VBA】基本統計量の計算とヒストグラムの表示

【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を使って基本統計量(平均値、中央値、標準偏差、最小値、最大値)を計算し、 ヒストグラムを作成する方法を紹介しました。これを活用してデータ分析を効率化してください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です