MENU

大きさが変わる表に、合計を入れる

VBAマクロを、簡単に作成してみませんか?

例として、アプリで「大きさが変わる表に、合計を入れる」VBAマクロを作成します。

処理のイメージ

事例

成績表に、合計を表示するマクロを、アプリで作成します。

 

数字の入っているエリアの左上を指定します。

マクロを実行すると、大きさが違う各表に合計が表示されます。

アプリの設定

アプリの設定です。

トップページ ⇒▼合計表示 ⇒【ツール】大きさが変わる表に、合計を入れる



※ 数字エリアとは、見出しの列や行を除いた、数字の部分です。

※ は、ABCではなく、列数の数字を入力します。

表示されるVBAコード 

アプリで作成されたコードを、VBE画面に貼り付ければ、マクロの完成です。

Sub デモ_3() '大きさが変わる表に、合計を入れる
Application.ScreenUpdating = False ' 画面描画を停止
Application.DisplayAlerts = False  ' 警告表示を停止
Sheets("sheet1").Select
Dim 先頭列エリア As Range, 各列先頭 As Range, 列数 As Long, 各行先頭 As Range, 行数 As Long
'各表の数字エリアの1列目を「先頭列エリア」とする
'For Nextで、各表の数字エリアを上から順番に処理
For Each 先頭列エリア In Range(Cells(2, 3), Cells(Rows.Count, 3).End(xlUp)).SpecialCells(xlCellTypeConstants, xlNumbers).Areas
    '数字エリアの列数と行数を計算
    列数 = 先頭列エリア.CurrentRegion.Item(先頭列エリア.CurrentRegion.Count).Column - 先頭列エリア.Item(1).Column + 1
    行数 = 先頭列エリア.CurrentRegion.Item(先頭列エリア.CurrentRegion.Count).Row - 先頭列エリア.Item(1).Row + 1
    '縦計を、各列の末尾に表示
    For Each 各列先頭 In 先頭列エリア.Resize(1, 列数)
      各列先頭.Offset(先頭列エリア.Rows.Count).Value = WorksheetFunction.Sum(各列先頭.Resize(先頭列エリア.Rows.Count))
    Next 各列先頭
    '縦計の左に"合計"を表示
    先頭列エリア.Offset(行数, -1).Resize(1, 1).Value = "合計"
    '横計を、各行の末尾に表示
    For Each 各行先頭 In 先頭列エリア.Resize(行数 + 1, 1)
      各行先頭.Offset(0, 列数).Value = WorksheetFunction.Sum(各行先頭.Resize(, 列数))
    Next 各行先頭
    '横計の上に"合計"を表示
    先頭列エリア.Offset(-1, 列数).Resize(1, 1).Value = "合計"
Next 先頭列エリア
Application.ScreenUpdating = True ' 画面描画を再開
Application.DisplayAlerts = True  ' 警告表示を再開
End Sub

※ SpecialCells(xlCellTypeConstants, xlNumbers).Areasは、数字のエリアです。

※ offsetResizeで対象の範囲を設定しています。

※ 下図のように、指定したの上にある数字の入った表を対象とします。

よって、指定した行の上にある表(D組)は対象になりません。

※ 表の数は、1つでも処理できます。

マクロを使うメリット

手作業で数分かかる作業が、1秒で終わります。

ぜひ、アプリをご利用ください。

 

アプリはこちらから↓↓↓↓