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

问题描述

我正在尝试将求和公式扩展到动态范围。该总和包括从第5行到该列中倒数第二个最后使用的行的所有值,然后总和位于最后一个使用的行中。但是,行和列的数量各不相同,唯一保持不变的是总和应始终从第5行开始。总和也总是始于C列。我已经设法编写了一个宏,将总和放入C列的最后一行。我现在正在处理一个宏,该宏将该和扩展到工作表中所有其他已使用的列,除了最后一列(该列包含另一个值而不是和)。 我正在使用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,因此,如果列的行数不同,则总数将位于第一行,而没有每一列的数据。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...