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

Best way to get column totals on multiple columns with varying row sizes using 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, 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)"

Say every column in Range H:EA needs a sum total

请注意,正常方法是使用 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