27. februar 2013 - 21:29Der er
4 kommentarer og 1 løsning
Skal øge en konstant, hvert 3. år i en kode for nutidsværdi.
Hej.
Jeg er ved at lave en Opgave i VBA, jeg skal lave en funktion som udregner nutidsværdien, ud fra input: rente, differensen mellem ind- og udbetalinger og årstal. Jeg har sat renten til 10 pct. opgaven går videre ud på at jeg skal øge renten første gang i år 4 med 1 pct. og efterfølgende skal den ene pct. øges med 20 pct. hvert 3. år. sådan så renten øges med 1.44 pct. i år 7 (til eksempel). Jeg har lavet en kode som udregner den generelle nutidsværdi, men kan simpelthen ikke finde en løsning på hvordan jeg skal øge min rente. Her er den kode som jeg er kommet frem til indtil videre:
Function Nutidsvaerdi(r As Double, Belob As Range, Aar As Range) Debug.Print Belob.Cells.Count If Belob.Cells.Count <> Aar.Cells.Count Then MsgBox "Error: Ranges have different length" Nutidsvaerdi = "ErrLength" Exit Function End If Dim a1(), b1() ReDim a1(1 To Belob.Cells.Count) ReDim b1(1 To Belob.Cells.Count)
For i = 1 To Belob.Cells.Count a1(i) = Belob(i) b1(i) = Aar(i) Next Nutidsvaerdi = Mellemregning(r, a1, b1) End Function Private Function Mellemregning(rr, xx, yy) Sum = 0 For i = 1 To UBound(xx) Sum = Sum + xx(i) / ((1 + rr) ^ (yy(i) - yy(1) + 1)) Next Mellemregning = Sum End Function
Til information, er det også en del af opgaven at den skal være delt over to funktioner, ved brug af privat funktionen.
Du kunne måske lave en tæller, som du tæller op for hvert år, og når du når fire, så ændrer du dine værdier eller bruger en anden løkke til at afspejle ændringen i rente og tilskrivningsinterval?
Nu kender jeg ikke rigtig VB, men jeg kan prøve at hjælpe dig på vej med noget pseudokode. Jeg ved ikke om der er switch statements i VB, så det bliver en række if-sætninger.
rente = 10 renters_rente = 0,01 løbende_år = 0
for (løbende_år <= år_i_alt) { if (løbende_år = 4) // hvis vi er 4. år, læg da 1% til renten { rente = rente * renters_rente } else if (løbende år > 4) // hvis vi er over 4. år, { if (løbende_år modulo 3 == 0) // og tjek for hvert 3. år { renters_rente = renters_rente * 1,20 // læg da 20% til den 1% rente = rente * renters_rente // og læg det til rente } } <mellemregninger, der skal benytte variable "rente"> løbende_år = løbende_år + 1 }
Også til en anden gang: Svar-muligheden, den er til løsninger, så der kan gives point. Hvis du blot har en kommentar eller et forslag, så brug Kommentar-muligheden.
Jeg fandt selv en løsning. Det ovenstående kan ikke fungere i VBA.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.