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
の構造が崩れていないか確認してください。
サンプルファイル
このコードを実際に試せるサンプルファイルを配布しています。
関連記事
▶ VBAファイルの保存方法(.xlsm)|マクロを消さないための保存手順
▶ VBAで平均を計算するコード(AVERAGE)
▶ VBAコード集
.png)
コメント