VBAマクロを自動作成する無料アプリ

VBAコードの知識不要😊ChatGPTで機能を追加

MENU

【ノーコード】大きさが変わる表に、合計を入れる

エクセルVBAマクロを自動作成する無料アプリです。

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

事例 成績表に、合計を表示する

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

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

アプリの設定

アプリのトップページ

 ⇒▼集計・合計

 ⇒【ツール】大きさが変わる表に、合計を入れる

 

【ポイント】

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

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

表示されるVBAコード 

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

 

VBAコードを見る

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つでも処理できます。

 

ChatGPTで修正

あなたが自動化したい内容と事例が少し異なる場合は、無料で使えるマイクロソフトの「BingAIチャット」でコードを修正します。とても簡単です!

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