二次元配列の要素の合計値を求めたい
二次元配列の要素を全て足したい(ExcelのSum関数の動き)ケースがあります。
VBAには全ての要素を足す専用の関数は用意されていないので、Excel関数(Sum関数)を使用します。
二次元配列の要素の合計値を求めるサンプルコード
'■2次元配列の要素の平均値を出すサンプルコード Public Sub sample() Dim arr(1, 1) As Variant '■配列に値を代入する。 arr(0, 0) = 5 arr(0, 1) = 5 arr(1, 0) = 5 arr(1, 1) = 5 '■WorkSheet関数のSumProductで合計値を出す。 Debug.Print WorksheetFunction.Sum(arr) '20 '■二つの配列の合計値も求める事が可能。 Dim tmp(2) As Variant tmp(0) = 5 tmp(1) = 5 tmp(2) = 5 '■WorkSheet関数のSumで合計値を出す。 Debug.Print WorksheetFunction.SumProduct(arr, tmp) '35=20+15 End Sub
その他
- VBAに関数が用意されていない場合は、Excel関数をWorksheetFunctionで使用してしまいましょう。
- もちろんExcel関数を使用せずにFor~Loopで処理しても同様の動作です。
(例)
Dim i As Long, j 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) Next j Next i Debug.Print num
- 二次元配列の一部の行や列のみを集計したい場合はForでLoopさせるか、
一次元配列に切り出した後、Sum関数で合計しないといけません。
コメント