【问题标题】:SUM a range where the range is a variableSUM 一个范围,其中范围是一个变量
【发布时间】:2018-05-24 15:08:29
【问题描述】:

我有:

Set QuanityRange = Sheets("Raw_Data").Range("F2:F" & lastDataRow)
MsgBox "This is the Data Range: " & vbNewLine & "Quanities: " & QuanityRange.Address()

这将在消息框中显示 $F$2:$F$1838。

如果我有:

Total = WorksheetFunction.Sum(QuanityRange)
MsgBox "Total is: " & Total

这会在消息框中显示 15170。

我的问题是我目前有:

Range("B2", Cells(lastMatrixRow, lastMatrixCol)).Formula = "=Sum(Raw_Data!$F$2:$F$10000)"

这行得通,它将 15170 放入从 B2 到 BO114 的每个单元格中,在这种情况下恰好是 (lastMatrixRow, lastMatrixCol) 的位置。

但是,我想做的是:

Range("B2", Cells(lastMatrixRow, lastMatrixCol)).Formula = "=Sum(QuanityRange)"

代替:

Range("B2", Cells(lastMatrixRow, lastMatrixCol)).Formula = "=Sum(Raw_Data!$F$2:$F$10000)"

但它不起作用。我该怎么做?

【问题讨论】:

  • 放两张截图会很有帮助。并对lastMatrixRowlastMatrixCol 进行硬编码以使其更易于理解。

标签: vba excel variables sum


【解决方案1】:

你可以试试:

Range("B2", Cells(lastMatrixRow, lastMatrixCol)).Formula = "=Sum(" & QuanityRange.Address() & ")"

【讨论】:

  • 返回全零而不是 15170
  • B2 是在 Raw_Data 工作表上还是另一个?
  • 让我备份......我真正想要完成的是从 F2 到 F 列中包含数据的最后一行的总和。我不知道如何做到这一点,所以我将该范围命名为“QuantityRange”,但如果有更简单的方法......我完全赞成......
  • 不在另一张纸上...该纸名为“Matrix”
  • @XCELLGUY FWIW,最好不要硬编码工作表名称 - 使用 QuanityRange.Parent.Name - 以防万一你在路上更改工作表名称。见here
【解决方案2】:

如果您尝试将范围变量的地址放入公式中 - 这是一种解决方案:

Public Sub TestMe()
    Dim varRange As Range
    Set varRange = Range("F1:F5")
    Range("A1", Cells(3, 3)).Formula = "=Sum(" & varRange.Address & ")"
End Sub

想法是右边的公式应该可以“翻译”成字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-09
    相关资源
    最近更新 更多