1

故 Frank Kabel によって書かれたDaily Dose of Excel Web サイトには、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の達人はいますか?

4

1 に答える 1

2
ROW(INDIRECT("1:"&ROWS(coefficients)))-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(coefficients)))-1 を選択し、Ctrl+= を押します。次に、数式の別の部分を選択し、開き括弧と閉じ括弧が一致していることを確認して、Ctrl+= を押します。数式全体が計算されるまで、これを繰り返すことができます。完了したら、元の数式を失わないように、必ずセルからエスケープしてください。

第474話はこちらもご覧ください。

于 2009-06-30T14:30:03.457 に答える