如何将SERIESSUM函数转换为VB6?

时间:2009-06-30 03:40:19

标签: excel vb6 excel-formula power-series

在已故Frank Kabel撰写的Daily Dose of 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大师吗?

1 个答案:

答案 0 :(得分:2)

ROW(INDIRECT( “1:” &安培; ROWS(系数))) - 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(systems))) - 1并按Ctrl + =。然后选择公式的另一部分,确保匹配左括号和右括号,然后按Ctrl + =。您可以迭代这个,直到您计算出整个公式。完成后,请务必将ESCAPE退出单元格,这样就不会丢失原始公式。

另见Episode 474 here