Avatar billede MissL Nybegynder
27. februar 2013 - 21:29 Der 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.

Håber der er en som kan hjælpe mig.
Avatar billede conz Juniormester
28. februar 2013 - 08:19 #1
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?
Avatar billede MissL Nybegynder
28. februar 2013 - 09:27 #2
jo det lyder meget fornuftigt, og har selv tænkt i de baner, men har ingen ide om hvordan det skal se ud i min kode?? måske du kan give et bud på det?
Avatar billede conz Juniormester
28. februar 2013 - 12:31 #3
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.
Avatar billede conz Juniormester
28. februar 2013 - 12:33 #4
Og bemærk venligst at ovenstående er skrevet i toget på en telefon, så bær venligst over med mig, hvis der er et par fejl =P
Avatar billede MissL Nybegynder
14. marts 2013 - 00:29 #5
Jeg fandt selv en løsning. Det ovenstående kan ikke fungere i VBA.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester