Como faço para converter a função SERIESSUM para VB6?
-
21-08-2019 - |
Pergunta
Na Dose diária do site Excel , escrito pelo falecido Frank Kabel, existem algumas fórmulas que podem substituir funções ATP. Não sendo um guru Excel, eu estou lutando com a conversão de um (até agora!) Para VB6. (Por que eu estou fazendo isso eu posso relacionar uma vez que o NDA se esgote.)
O problema que estou tendo é com o código que está dentro para SERIESSUM, ou seja,
=SUMPRODUCT(coefficients,x^(n+m*(ROW(INDIRECT("1:"&ROWS(coefficients)))-1)))
Agora, as funções SUMPRODUCT e linhas Eu tenho sido capaz de prestar bastante simples com
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
O que eu não 'get' ainda é
- Como avalia
x^(n+m*(ROW(INDIRECT("1:"&ROWS(coefficients)))-1))
para uma matriz - e que essa matriz pode conter
Qualquer gurus Excel lá fora?
Solução
linha (indireta ( "1:" & linhas (coeficientes))) - 1
Se coeficientes tem 5 linhas, isso irá retornar a matriz {1,2,3,4,5}. O resto da progressão é
{1m, 2m, 3m, 4m, 5m)
{n + 1m, n + 2m, n + 3m, 4m + n, n + 5m)
{x ^ n + 1m, ^ x n + 2m, x ^ n + 3m, x ^ n + 4m, x ^ n + 5m)
Isso resulta Array Obtém 'série somados' contra coeffecients.
Você pode ver a progressão na barra de fórmulas do Excel usando Ctrl + = em partes destacadas das fórmulas. Há um limite de quantos caracteres que você pode exibir na barra de fórmulas, por isso, se coeficientes tem um monte de linhas, você pode receber o erro "fórmula demasiado longo"
Na barra de fórmulas, seleccione ROW (indireta ( "1:" & linhas (coeficientes))) - 1 e pressione Ctrl + =. Em seguida, selecione uma outra parte de sua fórmula, certificando-se de corresponder abrir e fechar parênteses, e pressione Ctrl + =. Você pode interagir este até que você tenha toda a fórmula calculada. Quando estiver pronto, certifique-se de escapar para fora da célula para que você não perca a sua fórmula original.
Veja também Episódio 474 aqui .