プロが教えるわが家の防犯対策術!

最終列の右へSUM関数を作成するため下記コードを実行しましたが、最終列「10月28日」が上書きされてしまいます。最終列+1をどの段階で記入したらよいか教えてください。

Sub test1()
Dim ColE, lrow As Long
Dim LCol, XCol, NCol As String
ColE = Cells(2, Columns.Count).End(xlToLeft).Column '2行目の最終列を取得
LCol = Cells(3, ColE).Address '3行目の最終列のセル番号を取得("I3")
XCol = Cells(3, ColE - 1).Address(RowAbsolute:=False, ColumnAbsolute:=False) 'SUM関数で使う最終列-1のセル番号を取得("H3")
lrow = Cells(Rows.Count, "B").End(xlUp).Row 'B列の最終行を取得
With Range(LCol)
.Formula = "=SUM(C3:" & XCol & ")" '最終行にSUM関数「C3~最終列」を代入
.AutoFill Destination:=.Resize(10, 1) 'AutoFillを使い横列分複写する
End With

NCol = Cells(2, ColE).Address '2行目の最終行のセル番号を取得
With Range(NCol)
.Formula = "合 計" 'I列先頭行に”合計”を代入
.HorizontalAlignment = xlCenter 'I列の先頭行合計”を中央揃え
End With
End Sub

「最終列の右へSUM関数を作成するため下記」の質問画像

A 回答 (3件)

こんばんは


ColE = Cells(2, Columns.Count).End(xlToLeft).Column '2行目の最終列を取得
これは値が入っている一番右の列番号です
その右隣ならば+1する必要がありますよ ご確認ください
    • good
    • 0
この回答へのお礼

ありがとうございます。ColEに+1して動きました。

お礼日時:2022/12/05 21:44

>どの段階で記入したらよいか教えてください。


以下のコードで
>XCol = Cells(3, ColE - 1)
>NCol = Cells(2, ColE).Address
とされているのでColE取得時で良いと思いますが 
コード内コメントの内容と添付図が少し違うので・・・なんとも
    • good
    • 0

『合計』のとこだけでいいなら入力するときで良いのでは



MsgBox ColE
MsgBox LCol
MsgBox XCol
MsgBox lrow

NCol = Cells(2, ColE + 1).Address '2行目の最終行のセル番号を取得
With Range(NCol)
.Formula = "合 計" 'I列先頭行に”合計”を代入
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2022/12/05 21:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!