如何将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集 。