MENU

列数が増減する表の最終列に、合計(SUM関数)を表示する

無料アプリで、すぐにエクセルVBAマクロを作成できます。

例として、アプリで「列数が増減する表の最終列に、合計(SUM関数)を表示する」VBAマクロを作成します。

(ページの末尾に、VBAコード掲載)

事例

データは、日が経つにつれ、列方向に増加するため、合計欄は右の列に移動します。

 

マクロで入力するエクセル関数

数式があるセルの、左隣を取得する関数は、

=INDIRECT(ADDRESS(ROW(),COLUMN()-1))

です。

よって、合計を取得する関数は、

=SUM($D3:INDIRECT(ADDRESS(ROW(),COLUMN()-1)))

となります。

※ 合計する左端セルはを忘れず、$D3とします。

※ なお、が増減する表の合計の関数は、

=SUM(D$3:INDIRECT(ADDRESS(ROW()-1,COLUMN())))

になります。

アプリの設定

アプリのトップページ 

 ⇒▼ 入力・クリア

 ⇒◇数式・Excel関数の入力

【ポイント】

■ 処理する範囲は、データの1列目のセルアドレスを入れます。

■ 範囲オプション欄は、選択肢の「最終の一つ下」を選び、最終行を最終列に読み替えて処理☑を入れます。

■ 処理する範囲左上セルに対応する関数を、入力する数式欄に入れます。

  その際、=を含め数式を””で囲みます。

■ 数式をエクセルからアプリに貼り付けるとき、エクセル上でEscキーを押し、コピーを解除します。

 

 

表示されるVBAコード 

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

Sub デモ_45() '数式入力
Application.ScreenUpdating = False ' 画面描画を停止
Application.DisplayAlerts = False  ' 警告表示を停止
Dim  セル範囲 As String, セル As Range, 右下セル As String
Dim 右上セル As  String
Sheets("sheet1").Select                         
Range("d3:d8").CurrentRegion.Select
右上セル = Cells(Range("d3").Row, Selection.Column+ Selection.Columns.Count).Address(False,False)
右下セル = Cells(Range("d8").Row, Selection.Column+ Selection.Columns.Count).Address(False,False)
セル範囲 = 右上セル & ":" & 右下セル

 Range(セル範囲).Select
Call デモ_45_メイン処理 (セル範囲,セル) 
Application.DisplayAlerts = true   ' 警告表示を再開
Application.ScreenUpdating = True  ' 画面描画を再開 
End Sub                             
 
Sub  デモ_45_メイン処理 (セル範囲 As String, セル As Range)
Selection.Offset(0, 0).Formula = "=SUM($D3:INDIRECT(ADDRESS(ROW(),COLUMN()-1)))"
End sub

※上のSubで、表全体(CurrentRegion)から、最終列の一つ右列の範囲を選択します。

※下のSubで、その範囲に関数を入力します。

マクロを使うメリット

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

 

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