Herkent U dit? U heeft een zak met geld, die U wilt inleggen in een spaarrekening. Bovendien wilt U maandelijks ook nog een bedrag sparen. U ontvangt jaarlijks op 31 december de rente. Het is nagenoeg onmoglijk om met de huidige Excel/VBA functies te berekenen wat U aan het eind van de rit aan geld heeft. Immers de functie FV (future value / in het nederlands TW - toekomstige waarde) voegt de rente toe bij elke inleg. De rente delen door 12 (maandelijkse rente) biedt soelaas, maar is nog steeds niet nauwkeurig genoeg.
Onderstaand vindt U een functie die uitgaat van inlegdata.
Function FV_Single(Payment, InterestRate, StartDate, EndDate, Optional PresentValue)
If IsEmpty(PresentValue) Then PresentValue = 0
ReferenceDate = StartDate
TotalPayments = PresentValue
NumberOfMonths = DateDiff("m", StartDate, EndDate)
For MyTeller = 1 To NumberOfMonths
TotalPayments = TotalPayments + Payment
InterestAmount = IPmt(InterestRate / 12, 1, 1, -TotalPayments, 0, 0)
TotalInterestAmount = TotalInterestAmount + InterestAmount
If Month(ReferenceDate) = 12 Then
TotalPayments = TotalPayments + TotalInterestAmount
TotalInterestAmount = 0
End If
ReferenceDate = DateAdd("m", 1, ReferenceDate)
Next
FV_Single = TotalPayments + TotalInterestAmount
End Function
Deze functie dient in de VBA omgeving te worden gekopieerd in een module. Daarna kan de functie worden gebruikt. De notatie van de functie is:
=FV_Single(inleg, rentepercentage, startdatum, einddatum, eerste inleg)
De eerste inleg is optioneel en kan 0 zijn of helemaal weggelaten worden. Overige variabelen:
Inleg = maandelijkse inleg
rentepercentage spreekt voor zich (dit is het jaarlijkse percentage!)
startdatum: de startdatum waarop de eerste inleg wordt gedaan
einddatum: de datum waarop de toekomstige waarde wordt opgenomen
De berekening is op de maand nauwkeurig. Er wordt geen rekening gehouden met inleg half in de maand.
Feedback is welkom.
Onderstaand vindt U een functie die uitgaat van inlegdata.
Function FV_Single(Payment, InterestRate, StartDate, EndDate, Optional PresentValue)
If IsEmpty(PresentValue) Then PresentValue = 0
ReferenceDate = StartDate
TotalPayments = PresentValue
NumberOfMonths = DateDiff("m", StartDate, EndDate)
For MyTeller = 1 To NumberOfMonths
TotalPayments = TotalPayments + Payment
InterestAmount = IPmt(InterestRate / 12, 1, 1, -TotalPayments, 0, 0)
TotalInterestAmount = TotalInterestAmount + InterestAmount
If Month(ReferenceDate) = 12 Then
TotalPayments = TotalPayments + TotalInterestAmount
TotalInterestAmount = 0
End If
ReferenceDate = DateAdd("m", 1, ReferenceDate)
Next
FV_Single = TotalPayments + TotalInterestAmount
End Function
Deze functie dient in de VBA omgeving te worden gekopieerd in een module. Daarna kan de functie worden gebruikt. De notatie van de functie is:
=FV_Single(inleg, rentepercentage, startdatum, einddatum, eerste inleg)
De eerste inleg is optioneel en kan 0 zijn of helemaal weggelaten worden. Overige variabelen:
Inleg = maandelijkse inleg
rentepercentage spreekt voor zich (dit is het jaarlijkse percentage!)
startdatum: de startdatum waarop de eerste inleg wordt gedaan
einddatum: de datum waarop de toekomstige waarde wordt opgenomen
De berekening is op de maand nauwkeurig. Er wordt geen rekening gehouden met inleg half in de maand.
Feedback is welkom.