配列(一次元/二次元)

二次元配列の要素の平均値を求める【ExcelVBA】

二次元配列の要素の平均値を求めたい

二次元配列の要素を平均したい(ExcelのAverage関数の動き)ケースがあります。
VBAには全ての要素を平均する専用の関数は用意されていません。
Excel関数(Average関数)を使用し、平均値を求めます。

二次元配列の要素の平均値を求めるサンプルコード

'■2次元配列の要素の平均値を出すサンプルコード
Public Sub sample()

    Dim arr(1, 1) As Variant
    '■配列に値を代入する。
    arr(0, 0) = 1
    arr(0, 1) = 4
    arr(1, 0) = 1
    arr(1, 1) = 2

    '■WorkSheet関数のSumProductで合計値を出す。
    Debug.Print WorksheetFunction.Average(arr)   '2

    '■二つの配列の合計値も求める事が可能。
    Dim tmp(1) As Variant
    tmp(0) = 1
    tmp(1) = 9

    '■WorkSheet関数のSumで合計値を出す。
    Debug.Print WorksheetFunction.Average(arr, tmp)  '3=(8+10)/6
End Sub

その他

  • VBAに関数が用意されていない場合は、Excel関数をWorksheetFunctionで使用してしまいましょう。
  • もちろんExcel関数を使用せずにFor~Loopで処理しても同様の動作です。
    (例)
    Dim i As Long, j As Long, k As Long
    Dim num As Long: num = 0
    
    For i = LBound(arr, 1) To UBound(arr, 1)
        For j = LBound(arr, 2) To UBound(arr, 2)
            num = num + arr(i, j)
            k = k + 1
        Next j
    Next i

    Debug.Print num / k     '2

関連記事

コメント

タイトルとURLをコピーしました