Как преобразовать функцию SERIESSUM в VB6?

Asked
Viewd207

1

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

Этот результирующий массив суммируется с коэффициентами.

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

В строке формул выберите СТРОКА (ДВССЫЛ ("1:" & СТРОКИ (коэффициенты))) - 1 и нажмите Ctrl + =. Затем выберите другую часть формулы, убедившись, что совпадают открывающая и закрывающая круглые скобки, и нажмите Ctrl + =. Вы можете повторять это, пока не рассчитаете всю формулу. Когда вы закончите, не забудьте ВЫЙТИ из ячейки, чтобы не потерять исходную формулу.

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

  • Замечательно. Замечательно. Я весь день входил в систему и выходил из нее, ожидая ответа. Спасибо Спасибо спасибо. Асанте. Шукрия. Merci. Грасиас. Се Се. Облигад. Tenkyu tru. Данке. Так.

    bugmagnet30 июня 2009, 15:19