Rompe Cabeza
Me he roto la cabeza pensando porque una formula que utilize para calcular el pago a recibir para mantener una TIR determina, no funciona. Al utilizar con un valor negativo funciona bien con más valores no funciona si alguien me puede ayudar se lo agradecerÃa, atte.
Rodrigo
el programa es simple:
" Montos" es la el vector con los valores a lo que interesa calcular la TIR
Monto (6) es cuando se recibe el pago
Function Ingresoextra4(tiroriginal)
Dim montos(80) As Double
montosup = 5000000
montoinf = -5000000
For int1 = 0 To 6
montos(int1) = Range("D35").Offset(0, int1)
Next
For int1 = 8 To 80
montos(int1) = Range("D35").Offset(0, int1)
Next
dif = 1
int2 = 0
Do While Abs(dif) > 0.00000001
Ingresoextra1 = (montosup + montoinf) / 2
montos(7) = Ingresoextra1
tirnueva = (1 + IRR(montos(), 0.1)) ^ 2 - 1
dif = tirnueva - tiroriginal
If dif > 0 Then
montosup = Ingresoextra1
End If
If dif < 0 Then
montoinf = Ingresoextra1
End If
int2 = int2 + 1
If int2 > 1000 Then
Exit Do
End If
Loop
End Function
Rodrigo
el programa es simple:
" Montos" es la el vector con los valores a lo que interesa calcular la TIR
Monto (6) es cuando se recibe el pago
Function Ingresoextra4(tiroriginal)
Dim montos(80) As Double
montosup = 5000000
montoinf = -5000000
For int1 = 0 To 6
montos(int1) = Range("D35").Offset(0, int1)
Next
For int1 = 8 To 80
montos(int1) = Range("D35").Offset(0, int1)
Next
dif = 1
int2 = 0
Do While Abs(dif) > 0.00000001
Ingresoextra1 = (montosup + montoinf) / 2
montos(7) = Ingresoextra1
tirnueva = (1 + IRR(montos(), 0.1)) ^ 2 - 1
dif = tirnueva - tiroriginal
If dif > 0 Then
montosup = Ingresoextra1
End If
If dif < 0 Then
montoinf = Ingresoextra1
End If
int2 = int2 + 1
If int2 > 1000 Then
Exit Do
End If
Loop
End Function
