VBAで合計を計算するコード(SUM)|A列の数値を自動で集計する方法

Excel VBAでA列の数値を自動で合計するコードです。

データ件数が増減しても自動で最終行を取得し、合計を計算できます。

売上集計や件数集計など、実務でもよく利用されるサンプルです。


このコードでできること

  • A列の最終行を自動取得
  • A列の数値を合計
  • 文字列は除外
  • 結果をB3セルへ表示

VBAコード

Sub 合計を計算する()

    Dim lastRow As Long
    Dim i As Long
    Dim total As Double

    'A列の最終行を取得
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row

    total = 0

    'A列を順番に合計
    For i = 2 To lastRow

        '数字だけ合計
        If IsNumeric(Cells(i, 1).Value) Then
            total = total + Cells(i, 1).Value
        End If

    Next i

    'B3へ結果表示
    Range("B3").Value = total

End Sub

コードの解説

最終行を取得する

lastRow = Cells(Rows.Count, 1).End(xlUp).Row

A列の一番下から上へ向かってデータが入力されている行を探します。

データ件数が毎回変わる場合でも対応できます。


合計を初期化する

total = 0

合計値を保存するための変数を0で初期化しています。


A列を順番に確認する

For i = 2 To lastRow

2行目から最終行まで繰り返し処理を行います。


数字だけ合計する

If IsNumeric(Cells(i, 1).Value) Then

数値が入力されている場合のみ合計します。

文字や空白は自動的に除外されます。


合計結果を表示する

Range("B3").Value = total

計算した合計をB3セルへ表示します。


実務ではどんな場面で使うの?

例えば次のような場面で利用できます。

  • 売上金額の集計
  • 在庫数の合計
  • 作業時間の合計
  • 経費の集計
  • アンケート結果の集計

毎回SUM関数を入力する代わりに、ボタン1つで集計できます。


カスタマイズ例

B5へ結果を表示する

Range("B5").Value = total

C列を集計する

lastRow = Cells(Rows.Count, 3).End(xlUp).Row

If IsNumeric(Cells(i, 3).Value) Then

列番号を3へ変更します。


3行目から集計する

For i = 3 To lastRow

開始行を変更できます。


よくあるエラー

合計が表示されない

以下を確認してください。

  • A列に数値が入力されているか
  • 結果表示先セルが正しいか
  • マクロが有効になっているか

エラーが発生する

VBAコードをコピーした際に、

Sub

End Sub

の構造が崩れていないか確認してください。


サンプルファイル

このコードを実際に試せるサンプルファイルを配布しています。

サンプルファイルをダウンロード(.Zip)


関連記事

SUM関数不要!ボタン1つで合計を出す方法

VBAファイルの保存方法(.xlsm)|マクロを消さないための保存手順

▶ VBAで平均を計算するコード(AVERAGE)

▶ VBAコード集

コメント