1

在已故的 Frank Kabel 编写的 Excel 每日剂量网站上,有一些公式可以代替 ATP 函数。不是 Excel 大师,我正在努力将一个(到目前为止!)转换为 VB6。(我为什么要这样做,一旦 NDA 用完,我可能会联系起来。)

我遇到的问题是代表SERIESSUM的代码,即,

=SUMPRODUCT(coefficients,x^(n+m*(ROW(INDIRECT("1:"&ROWS(coefficients)))-1)))

现在我已经能够相当简单地渲染 SUMPRODUCT 和 ROWS 函数了

Public Function SUMPRODUCT(a1 As Variant, a2 As Variant) As Double
    Dim dRes As Double
    Dim dVal As Double
    Dim i As Long
    If LBound(a1) = LBound(a2) And UBound(a1) = UBound(a2) Then
        For i = LBound(a1) To UBound(a1)
            dVal = a1(i) * a2(i)
            dRes = dRes + dVal
        Next
    End If
    SUMPRODUCT = dRes
End Function

Public Function ROWS(a1 As Variant)
    ROWS = UBound(a1) - LBound(a1) + 1
End Function

我还没有“得到”的是

  • 如何x^(n+m*(ROW(INDIRECT("1:"&ROWS(coefficients)))-1))评估为数组
  • 以及该数组可能包含的内容

那里有任何 Excel 大师吗?

4

1 回答 1

2
ROW(INDIRECT("1:"&ROWS(coefficients)))-1

如果系数有 5 行,这将返回数组 {1,2,3,4,5}。剩下的进度是

{1m, 2m, 3m, 4m, 5m)

{n+1m, n+2m, n+3m, n+4m, n+5m)

{x^n+1m, x^n+2m, x^n+3m, x^n+4m, x^n+5m)

得到的数组对系数进行“系列求和”。

您可以通过在公式的突出显示部分上使用 Ctrl+= 在 Excel 的公式栏中查看进度。您可以在公式栏中显示多少个字符是有限制的,因此如果系数有很多行,您可能会收到错误“公式太长”

在公式栏中,选择 ROW(INDIRECT("1:"&ROWS(coefficients)))-1 并按 Ctrl+=。然后选择公式的另一部分,确保匹配左括号和右括号,然后按 Ctrl+=。您可以重复此操作,直到计算出整个公式。完成后,请务必退出单元格,以免丢失原始公式。

另请参阅此处的第 474 集

于 2009-06-30T14:30:03.457 回答