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

使用excel vba宏将总和扩展到动态范围,excel,vba,sum,autofill,Excel,Vba,Sum,Autofill,我试图将求和公式扩展到一个动态范围。总和包括从第5行到列中最后使用的第二行的所有值,总和则位于最后使用的行中。然而,行和列的数量不同,唯一保持不变的是总和应该总是从第5行开始。求和也总是从C列开始。我已经设法编写了一个宏,将求和放在C列的最后一行。我现在正在编写一个宏,该宏将此求和扩展到工作表中所有其他使用的列,但最后一列除外(该列包含另一个值,而不是求和)。 我正在使用selection.autofill。但是,我在声明要填充的范围时遇到问题。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
,因此,如果列的行数不同,则总计将位于第一行,而不包含每列的数据。

是否需要将其作为公式?它能仅仅是总和的值吗?嗨,达米安,谢谢,代码运行得很好。我现在需要排除到不需要求和的列。这些列的位置也各不相同,但它们在第4行中包含某些字符串。你能告诉我怎么做吗?用if语句?if语句应该封装循环还是以其他方式封装循环?@meije17有很多字符串吗?它们有一些共同的模式吗?它有两个字符串,它们总是相同的same@Meisje17
如果Cell=“Your String1”或Cell=“Your String2”,则转到下一个单元格
,并使用
NextCell: