SUM函数在VBA中 – 不要硬编码行和列

如何在vba中的sum函数中使用lastRowvariables? 在计算每行中的单词数量直到最后一行之后,我想将每行中的单个总计加起来成为整个总列,但是我不想将范围硬编码到vba中的总和函数中? 有另一种方法吗?

例:

Column: ABCDEF NRow 1: 2 3 4 5 6 7 NRow 2: 3 4 5 6 7 8 Total 3: 5 7 9 11 13 15 

要避免SUM(R[-2]C:R[-1]C) ? 我想要SUM(R[lastRow]C:R[-1]C)或者以相同的方式运行的东西。

谢谢!

如果可以保证column A总是有数据,那么要find最后一行,可以执行以下操作:

 Option Explicit Sub addSums() Dim lstRow As Integer With Excel.ThisWorkbook.Sheets("Sheet1") lstRow = .Cells(.Rows.Count, 1).End(Excel.xlUp).Row Dim j As Integer For j = 1 To .Cells(1, .Columns.Count).End(Excel.xlToLeft).Column .Cells(lstRow + 1, j) = "=SUM(R[-" & lstRow - 1 & "]C:R[-1]C)" .Cells(lstRow + 1, j).Font.Bold = True Next j End With End Sub 

似乎工作正常以下内容:

在这里输入图像说明

像这样的东西

  1. 将活动工作表上的使用范围从A1到列F最后使用的单元格
  2. 转到此范围之下的第一个单元Cells(rng1.Cells(1).Row + rng1.Rows.Count, 1) ,调整为感兴趣范围内的列的数量(本例中为6)
  3. inputforumula "=SUM(R[-" & rng1.Rows.Count & "]C:R[-1]C)"其中rng1.Rows.Countdynamic地给出第一行

 Sub GetRange() Dim rng1 As Range Set rng1 = Range([a1], Cells(Rows.Count, "F").End(xlUp)) Cells(rng1.Cells(1).Row + rng1.Rows.Count, 1).Resize(1, rng1.Columns.Count).Value = "=SUM(R[-" & rng1.Rows.Count & "]C:R[-1]C)" End Sub 

如果您的源数据来自外部源,则适当的机制是:

  • 在input表中创build一个命名的数据范围;
  • 将inut表设置为在刷新时自动resize; 和
  • 然后在你的函数中使用命名数据范围。