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
似乎工作正常以下内容:
像这样的东西
- 将活动工作表上的使用范围从
A1
到列F
最后使用的单元格 - 转到此范围之下的第一个单元
Cells(rng1.Cells(1).Row + rng1.Rows.Count, 1)
,调整为感兴趣范围内的列的数量(本例中为6) - inputforumula
"=SUM(R[-" & rng1.Rows.Count & "]C:R[-1]C)"
其中rng1.Rows.Count
dynamic地给出第一行
码
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; 和
- 然后在你的函数中使用命名数据范围。