O valor financiado quase sempre terá uma diferença de centavos, devido as decimais que envolvem o cálculo.
A tabela price está considerando a contagem dias corridos, ou seja, varia de 30, 31, 28 ou 29 dias conforme o mês (lembrando que no cálculo com a HP12 o resultado será sempre diferente pois a mesma considera todos os meses com 30 dias).
No início da função estão as informações de como passar os parâmetros.
Testem antes de utilizar!
;-)
Public Function f_composicao(taxa As Double, _ qtd_parcelas As Integer, _ dt_inicio As String, _ dt_primeira_parcela As String, _ vlr_parcela) As Double 'Para passar os argumentos desta função: 'Informar valores no padrão americano (ponto no lugar de vírgula) 'Informar data entre aspas duplas (string) Exemplo: "31/07/2013" 'Informat a taxa em percentual. Exemplo 1,5% -> informar 0.015 Dim i As Integer Dim tx_ao_dia As Double Dim vlr_composicao As Double tx_ao_dia = Fix((((taxa + 1) ^ (1 / 30) - 1) * 100) * 1000000000) / 1000000000 vlr_composicao = 0 'Primeira parcela vlr_composicao = vlr_parcela * (Fix(1 / ((tx_ao_dia / 100 + 1) ^ ((CDate(dt_primeira_parcela) - CDate(dt_inicio)))) * 1000000000) / 1000000000) For i = 1 To qtd_parcelas - 1 vlr_composicao = vlr_composicao + vlr_parcela * (Fix(1 / ((tx_ao_dia / 100 + 1) ^ (DateAdd("M", i, CDate(dt_primeira_parcela)) - CDate(dt_inicio))) * 1000000000) / 1000000000) Next f_composicao = vlr_composicao Exit Function End Function