【Excel VBA】配列の合計の求め方【For Each文がおすすめ】

配列の合計を求める方法を紹介していきます。
他のブログの記事でも配列の合計の求め方を説明してくれていますが、自分が一番おすすめの使い方が紹介されていないので、それを説明していきたいと思います。
しかし、それだけだとボリュームが少なくなってしまいますので、その他のものについても説明していきます。
下記のコードをFunction化することで、使いまわすこともできます。

スポンサーリンク

For ~ Nextを使って合計を求める。(初心者向け)

これは一つずつ足していく方法です。
プログラミングの基礎的な内容なのでこれができたら他の部分でも応用できます。
ただ、()が多くなってしまい、読みづらいです。
自分が使うだけなら大丈夫ですが、他の人も変更したり、使用したりする場合は他の方法を使用した方がいいと思います。

Dim sum_list(10) As Long
Dim total As Long

’配列の作成
For index = 0 to 9
    sum_list(index) = index + 1
Next index

’合計を求める
For index = LBound(sum_list) to UBound(sum_list)
    total = total + sum_list(index)
Next index

MsgBox total

配列の作成について

配列の作成の仕方には複数ありますが、今回はFor Next文を使って説明していきます。
配列のインデックスに順番に変数を割り当てていくものです。

For Eachを使って合計を求める(読みやすさ向上)

配列の合計をするときはこれが一番のおすすめです。
VBAだけでなく、他のプログラミング言語でも応用が利く使い方で、読みやすく、シンプルな記述になります。

この形は1番可読性が高く、2次元配列であってもコードが増えたりしないので便利だと思います。

Dim sum_list(10) As Long
Dim total As Long

’配列の作成
sum_list = array(1,2,3,4,5,6,7,8,9,10)

’合計を求める
For Each num in sum_list
    total = total + num
Next num

MsgBox total

実際に2次元配列を使って合計を表示させる。

たったこれだけ?と思うかもしれませんが、これで実装できます。

まず、下記のように10×10のセルにデータを入力しました。

このすべての合計をメッセージボックスで表示するコードが以下のコードです。

Sub test()
    Total = 0
    For Each num In Range("A1:J10")
        Total = Total + num
    Next num
    MsgBox Total
End Sub

実行結果は以下の画像です。

という感じです。
ぜひFor Each 文を使ってやってみてください!

WorkSheetFunction.Sumを使って合計を求める(excel関数をそのまま使う)

Dim sum_list(10) As Long
Dim total As Long

’配列の作成
For index = 0 to 9
    sum_list(index) = index + 1
Next index

’合計を求める
total = WorksheetFunction.Sum(sum_list)

MsgBox total

これはExcel専用の記述方法になりますね。
Excelだけしかプログラムする予定のない方は一番記述量が少なくなりますので、これをおすすめします。
正直、WorksheetFunction関数が優秀すぎるので、ほとんどのことがこれでできると思いますよ。

コメント

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