Как мне преобразовать функцию SERIESSUM в VB6? - PullRequest
1 голос
/ 30 июня 2009

На веб-сайте Daily Dose of Excel , написанном покойным Фрэнком Кабелем, есть некоторые формулы, которые могут заменить функции 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?

1 Ответ

2 голосов
/ 30 июня 2009

ROW (косвенные ( "1": & РЯДЫ (коэффициенты))) - 1

Если коэффициенты имеют 5 строк, будет возвращен массив {1,2,3,4,5}. Остальная часть прогрессии составляет

{1м, 2м, 3м, 4м, 5м)

{n + 1м, n + 2м, n + 3м, n + 4м, n + 5м)

{x ^ n + 1м, x ^ n + 2м, x ^ n + 3м, x ^ n + 4м, x ^ n + 5м)

Этот результирующий массив получает "сумму суммированных" с коэффициентами.

Вы можете видеть прогресс в строке формул Excel, используя Ctrl + = на выделенных частях формул. Существует ограничение на количество символов, которые вы можете отобразить на панели формул, поэтому, если в коэффициентах много строк, вы можете получить ошибку «слишком длинная формула»

В строке формул выберите ROW (INDIRECT («1:» & ROWS (коэффициенты))) - 1 и нажмите Ctrl + =. Затем выберите другую часть своей формулы, убедившись, что вы соответствуете открывающим и закрывающим скобкам, и нажмите Ctrl + =. Вы можете повторять это до тех пор, пока не будет рассчитана вся формула. Когда вы закончите, не забудьте выйти из клетки, чтобы не потерять свою первоначальную формулу.

См. Также Эпизод 474 здесь .

...