2009-06-30 14 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とROWSであります私はまだ「get」がありません何

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 

とかなり単純にレンダリングすることができました機能が

  • 方法ですは、アレイ
  • とその配列はそこ

どれExcelの達人が含まれているかもしれないものと評価されましたか?

答えて

2

ROW(INDIRECT( "1" & ROWS(係数))) - 1

係数は5行がある場合、これは配列{1,2,3,4,5}を返します。進行の残りの部分は

{1M、2M、3M、4M、5メートル)

{N + M、N + 2M、N + 3M、N + 4M、N + 5メートル)

あります結果として得られる配列は、coeffecientsに対して 'series summed'を得ることができます。

数式の強調表示された部分にCtrl + =を使用して、プログレスバーをExcelの式バーで表示できます。数式バーに表示できる文字数には制限があります。係数に行が多い場合、「数式が長すぎます」というエラーが表示される場合があります。

数式バーで、 1: "& ROWS(係数)))) - 1を押し、Ctrl + =を押します。次に、数式の別の部分を選択し、開閉括弧と一致することを確認して、Ctrl + =を押します。式全体を計算するまで、これを繰り返すことができます。完了したら、元の数式を失うことはありませんので、セルから抜け出してください。

Episode 474 hereも参照してください。

+0

素晴らしい。素晴らしい。私は一日中、答えを待っているので、ログインしています。ありがとう、ありがとう、ありがとう。アサンテ。シュクリア。メルシ。グラシアス。ありがとうございます。 Obligad。 Tenkyu tru。ダンケTak。 – bugmagnet

関連する問題