excel vba:总结列值到最后一列

以下是我的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个这样的行。 我想写一个macros来将所有的列值总和为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的初学者,所以我不知道如何dynamicselect范围。

这解决了一般情况下所述的情况,根据您的范围/具体的预期结果进行调整

  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 

编辑:工作代码示例

在这里输入图像说明

我不确定为什么要使用VBA时,可以使用自动填充为每行执行a =SUM

你也可以在不使用VBA的情况下做一个dynamic范围,使用=OFFSET函数,这再次比为它写一个macros要容易得多。

但是,如果出于任何原因你坚持使用VBA,检查这个链接 ,哪一个方法对你更有意义

我testing了这个,它工作。 它假设你有一个不间断的值块,KZ是该块的最后一列。

对不起,如果regionvariables有点罗嗦。 如果你喜欢,我可以为你清理它。

  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