使用 excel vba 宏将总和扩展到动态范围

extend sum to dynamic range with excel vba macro

我正在尝试将求和公式扩展到动态范围。总和包括从第 5 行到列中倒数第二个使用的行的所有值,然后总和在最后使用的行中。但是,行数和列数各不相同,唯一不变的是总和应始终从第 5 行开始。总和也始终从 C 列开始。我已经设法编写了一个宏,将总和放在C 列的最后一行。我现在正在处理一个宏,将此总和扩展到 sheet 中所有其他使用的列,但最后一列除外(包含另一个值而不是总和)。 我正在与 selection.autofill 合作。但是,我在声明要填充的范围时遇到问题。 VBA 给我一个“预期的:语句结束”错误,我不知道为什么。有人可以向我解释我做错了什么吗?有没有比 selection.autofill 更好的方法 - 我担心它可能不会接管列,例如当扩展到 D 列中的单元格时实际上总结 D 列? 这是我已有的:

'
' sumtest Macro
'

'
Dim Cell As Range, sRange As Range
Dim wsDestination As Worksheet

With ThisWorkbook
Set wsDestination = .Worksheets("Overview")


End With

FirstRow = Rows(5).EntireRow
lastRow = wsDestination.Cells(Rows.Count, "A").End(xlUp).Row
LastRow1 = wsDestination.Cells(Rows.Count, "A").End(xlUp).Row
LastColumn1 = wsDestination.Cells(4, wsDestination.Columns.Count).End(xlToLeft).Column

Worksheets("Overview").Select
wsDestination.Cells(lastRow, "C").Select
ActiveCell.Formula = "=SUM(C5:C" & lastRow - 1 & ")"
Range(wsDestination.Cells(LastRow1, 3)).Select
Selection.AutoFill Destination:=Range(wsDestination.Cells(LastRow1,3),wsDestination.Cells(LastRow1,LastColumn -1)) Type:=xlFillDefault

End Sub

此代码将在最后一行的每一列中写入总和的

Option Explicit
Sub Sumtest()

    With ThisWorkbook.Sheets("Overview")
        Dim LastCol As Long: LastCol = .Cells(4, .Columns.Count).End(xlToLeft).Column
        Dim Cell As Range
        Dim LastRow As Long
        For Each Cell In .Range("C4", .Cells(4, LastCol))
            LastRow = .Cells(.Rows.Count, Cell.Column).End(xlUp).Row
            .Cells(LastRow, Cell.Column) = Application.Sum(.Range(Cell.Offset(1), .Cells(LastRow - 1, Cell.Column)))
        Next Cell
    End With

End Sub

请注意,代码将检查每一列的 LastRow,因此如果列的行数不同,则总计将位于第一行,每列没有数据。