一次元配列の要素の平均値を求めたい
一次元配列の要素を平均したい(ExcelのAverage関数の動き)ケースがあります。
VBAには全ての要素を平均する専用の関数は用意されていません。
Excel関数(Average関数)を使用し、平均値を求めます。
一次元配列の要素の平均値を求めるサンプルコード
'■1次元配列の要素の平均値を出すサンプルコード
Public Sub sample()
Dim arr(2) As Variant
'■配列に値を代入する。
arr(0) = 1
arr(1) = 2
arr(2) = 3
'■WorkSheet関数のAverage関数で平均値を出す。
Debug.Print WorksheetFunction.Average(arr) '2
'■二つの配列の平均値も求める事が可能。
Dim tmp(2) As Variant
tmp(0) = 5
tmp(1) = 5
tmp(2) = 5
'■WorkSheet関数のAverage関数で平均値を出す。
Debug.Print WorksheetFunction.Average(arr, tmp) '3.5=(6+15)/6
End Sub
その他
- VBAに関数が用意されていない場合は、Excel関数をWorksheetFunctionで使用してしまいましょう。
- もちろんExcel関数を使用せずにFor~Loopで処理しても同様の動作です。
(例)
Dim i As Long
Dim num As Long: num = 0
For i = LBound(arr) To UBound(arr)
num = num + arr(i)
Next i
Debug.Print num / i '2
'Loopし終えたiを使うので少しわかりづらいコードですが一例として。
関連記事
一次元/二次元配列の要素数の最小値を取得する【Lbound関数】
一次元/二次元配列の要素数の最大値を取得する【Ubound関数】
配列内の要素の最大値・最小値を取得する【MAX/MIN関数応用】【ExcelVBA】
一次元配列の要素の合計値を求める【ExcelVBA】



コメント