使用MS Excel VBA获取具有不同行大小的多列上的列总计的最佳方法

问题描述

我有数百个列(固定的)和不同数量的行,具体取决于数据提取我有一个在最后一行加一个总和公式的代码。这很好。但是我有很多列需​​要总结。假设范围H:EA中的每一列都需要总计。

我需要一个比以下公式更有效的公式,但是我不确定该转向哪里:

Sheet2.Range("A1").End(xlDown).Offset(1,25).FormulaR1C1 = "=SUM(R2C:R[-1]C)"
Sheet2.Range("A1").End(xlDown).Offset(1,26).FormulaR1C1 = "=SUM(R2C:R[-1]C)"
Sheet2.Range("A1").End(xlDown).Offset(1,27).FormulaR1C1 = "=SUM(R2C:R[-1]C)"
Sheet2.Range("A1").End(xlDown).Offset(1,28).FormulaR1C1 = "=SUM(R2C:R[-1]C)"
Sheet2.Range("A1").End(xlDown).Offset(1,29).FormulaR1C1 = "=SUM(R2C:R[-1]C)"
Sheet2.Range("A1").End(xlDown).Offset(1,30).FormulaR1C1 = "=SUM(R2C:R[-1]C)"

等等等

解决方法

您可以使用Range.Resize一步将公式写入多列:

Sheet2.Range("A1").End(xlDown).Offset(1,25).Resize(,7).FormulaR1C1 = "=SUM(R2C:R[-1]C)"

说范围H:EA中的每一列都需要总计

请注意,通常的方法是使用End(xlUp)查找最后一行,您可以轻松构建范围引用,而不用使用Resize

With Sheet2
    Dim lastRow As Long
    lastRow = .Cells(.Rows.Count,"H").End(xlUp).Row + 1

    .Range("H" & Row & ":EA" & lastRow).FormulaR1C1 = "=SUM(R2C:R[-1]C)"
End With