1

如何在 vba 的 sum 函数中使用 lastRow 变量?在我计算每行中的单词数直到最后一行之后,我想将每行中的各个总数加到一个总列中,但我不想将范围硬编码到 vba 中的 sum 函数中?还有其他方法吗?

例子:

Column:   A   B   C   D   E   F  
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)或以相同方式发挥作用的东西。

谢谢!

4

3 回答 3

1

像这样的东西

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

代码

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
于 2013-03-02T06:48:02.713 回答
0

如果您可以保证始终有数据column A然后找到最后一行,您可以执行以下操作:

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

似乎在以下方面工作正常:

在此处输入图像描述

于 2013-03-02T10:00:43.727 回答
-1

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

  • 在输入表周围创建一个命名数据范围;
  • 将 inut 表设置为在刷新时自动调整大小;和
  • 然后在您的函数中使用命名数据范围。
于 2013-03-02T06:33:54.253 回答