使用 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
我有数百列(固定)和不同数量的行,具体取决于数据提取。我有一个代码,它在最后一行加上一个输入总计公式。这很好用。但是我有很多列需要总结。假设范围 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