配列操作

一次元配列の要素の合計値を求める【ExcelVBA】

一次元配列の要素の合計値を求めたい

一次元配列の要素を全て足したい(ExcelのSum関数の動き)ケースがあります。
VBAには全ての要素を足す専用の関数は用意されていないので、Excel関数(Sum関数)を使用します。

一次元配列の要素の合計値を求めるサンプルコード

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

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

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

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

    '■WorkSheet関数のSumProductで合計値を出す。
    Debug.Print WorksheetFunction.Sum(arr, tmp)  '30=15+15

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

関連記事

一次元/二次元配列の要素数の最小値を取得する【Lbound関数】
一次元/二次元配列の要素数の最大値を取得する【Ubound関数】
配列内の要素の最大値・最小値を取得する【MAX/MIN関数応用】【ExcelVBA】
配列(静的/動的)を別の配列にコピーする【ExcelVBA】
配列を引数として他のプロシージャに渡す【ExcelVBA】

コメント

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