如何将SERIESSUM函数转换为VB6?

在已故的Frank Kabel撰写的Excel网站Daily Dose上 ,有一些公式可以代表ATPfunction。 不是一个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大师在那里?

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公式栏中的进度。 在公式栏中可以显示多less个字符是有限制的,因此如果系数有很多行,则可能会出现“公式太长”的错误。

在公式栏中,selectROW(INDIRECT(“1:”和ROWS(系数))) – 1,然后按Ctrl + =。 然后select公式的另一部分,确保匹配开合圆括号,然后按Ctrl + =。 你可以迭代这个,直到你计算出整个公式。 当你完成后,一定要退出单元格,所以你不会失去原来的公式。

这里也见第474集 。