excel vba:将列值求和到最后一列

问题描述 投票:0回答:3

以下是我的Excel格式。

KZ
是所有列中的
Grand Total

A|B|C|D|E|F|G|H|.....|KZ|
2|4|3|5|5|6|2|7|.....|34|
8|2|3|5|6|6|3|7|.....|44|
2|0|3|5|5|6|2|7|.....|30|
9|4|3|6|5|6|2|7|.....|44|
2|4|5|0|5|6|3|2|.....|24|

我的 Excel 工作表中有 1000 个这样的行。我想编写一个宏来将所有列值求和为

KZ
。请帮忙

这是我正在尝试的代码:

Sub SumMacro()

   Dim columns As Long

    columns = Sheets("AllData").UsedRange.Columns.Count
    Set testData = Sheets("AllData").Range("b65536").End(xlUp)
   ' Here I want to apply for/do while loop to sum up all the rows.
    ActiveCell.FormulaR1C1 = "=SUM(RC[-309]:RC[-1])"

End Sub

问题:我是VBA初学者,所以我不知道如何动态选择范围。

excel vba
3个回答
1
投票

这解决了所述情况 - 一般而言 - 调整到您的范围/特定的期望结果

  Sub SumMacro()

   Dim Totalcolumns As Long
   Dim CounterSum As Long
   Dim CounterColumn As Long
   Dim SumResult As Long
    Totalcolumns = Sheets("AllData").UsedRange.columns.Count

    For CounterColumn = 1 To Totalcolumns
    For CounterSum = 1 To Cells(Rows.Count, Totalcolumns).End(xlUp).Row
    On Error GoTo err01SumMacro
    SumResult = Cells(CounterSum, CounterColumn).Value + SumResult
    Next CounterSum
    Next CounterColumn
    MsgBox SumResult 'or debug print...
    If 1 = 2 Then '99 If error
err01SumMacro:
    MsgBox "err01SumMacro:Data in cells(R:" & CounterSum & ",C:" & CounterColumn & ") is not a number!", vbCriticalvbCritical
    End If

End Sub

编辑:工作代码示例


0
投票

我不确定为什么要使用 VBA,因为您可以使用自动填充为每一行执行

=SUM

您也可以在没有 VBA 的情况下使用

=OFFSET
函数来实现动态范围,这似乎比为其编写宏要容易得多。

但是,如果出于某种原因您坚持使用 VBA,请检查 此链接,了解哪种方法对您更有意义


0
投票

我测试了这个,它有效。它假设您有一个不间断值块,并且 KZ 是该块的最后一列。

抱歉,如果

region
变量有点啰嗦。如果你愿意的话我可以帮你解决。

    Sub getTotal()

    Dim cell As Range
    Dim region As Range
    Dim total As Integer

    Set region = Range("A1").CurrentRegion.Resize(Range("A1").CurrentRegion.Rows.Count, Range("A1").CurrentRegion.Columns.Count - 1)
    total = 0

    For Each cell In region
        total = total + cell.Value
    Next

    MsgBox (total)

    End Sub
© www.soinside.com 2019 - 2024. All rights reserved.