2009-06-30 150 views
1

在已故的Frank Kabel編寫的Daily Dose of Excel網站上,有一些公式可以代表ATP功能。不是一個Excel大師,我正在努力將一個(到目前爲止!)轉換爲VB6。 (爲什麼我這樣做,一旦NDA耗盡我可以涉及。)如何將SERIESSUM函數轉換爲VB6?

我遇到的問題是與代碼站在了SERIESSUM,即

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

現在SUMPRODUCT和行功能我已經能夠與

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的大師在那裏?

回答

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(係數))) - 1並按Ctrl + =。然後選擇公式的另一部分,確保您匹配開頭和結束括號,然後按Ctrl + =。你可以迭代這個,直到你計算出整個公式。完成後,請務必將ESCAPE移出單元格,以便不會丟失原始公式。請參閱Episode 474 here

+0

很好。奇妙。我一整天都在登錄和退出,等待答案。謝謝你,謝謝你,謝謝你。阿桑特。 Shukria。留言Merci。格拉西亞斯。謝謝。 Obligad。 Tenkyu tru。丹科。德。 – bugmagnet 2009-06-30 15:19:08