Excel UDF 对变量工作表的范围求和

Excel UDF to sum ranges on variable worksheets

这是我第一次post来到这里,所以我会尽力做到尽可能清楚。

我已经确定 UDF 是这里的正确解决方案,但这主要是因为我无法弄清楚内置函数的作用。

我的工作簿一开始有两个 sheet:"Summary Sheet" 和“{System Template}”。在摘要 Sheet 上,我创建了一个系统列表,从该列表中我有一些代码使用 {System Template} 生成新工作 sheets 并根据 sheets 命名列表中的值,工作正常。在摘要 sheet 上包含系统名称的单元格旁边的单元格中,我试图对各自 sheet 上每个不同系统的 "Q:Q" 范围内的值求和.范围中唯一发生变化的部分是数据来源的 sheet 名称。这是我遇到麻烦的地方。我收到 #Value 错误,我不知道如何找出问题所在。通常我会使用内置的公式评估工具,但它对 UDF 有点无用。任何帮助将不胜感激。

Function FrictionSum(rngInput As Range)
    Dim rngCell, rngDomain As Range
    Dim strName As String
    FrictionSum = 0

    'FrictionSum = rngInput.Value
    Set rngDomain = Sheets(strName).Range("Q:Q")

        For Each rngCell In rngDomain
            FrictionSum = FrictionSum + rngCell.Value
        Next rngCell

End Function

如公式所述:

=SUM(INDIRECT("'" & A1 & "'!Q:Q"))

应该做你想做的。

工作表 Function Sum 将执行您想要的操作,而无需迭代。 还要确保将值分配给 strName.

代码:

Function FrictionSum(rngInput As Range) As Double
    Dim rngDomain As Range
    Dim strName As String


    strName = rngInput.Value


    Set rngDomain = Sheets(strName).Range("Q:Q")
    FrictionSum = Application.WorksheetFunction.Sum(rngDomain)


End Function