Hummm... Avevo l'impressione che ci fosse una funzione finanziaria che potesse calcolare proprio gi interessi in caso di periodi con interessi vari.
Non l'ho ritrovata quindi me la sono costruita...
Corrisponde al seguente codice:
- Codice: Seleziona tutto
Function fuValMulti(ByRef rRates As Range, ByVal iVal As Double, ByVal iDate As Date, _
Optional ByVal enDate As Date = 0, Optional rBase As Variant) As Variant
Dim myI0, myR0 As Double, wkDate As Date, Rates As Range, baseR As Double, aArr(1 To 5), i0 As Double
Dim nDays As Long, dRate As Double, cNum As Long
'
If enDate = 0 Then enDate = Int(Now)
If enDate < iDate Then fuValMulti = 0 / 0
cNum = rRates.Columns.Count
wkDate = iDate
i0 = iVal
Set Rates = rRates.Range("A1")
If TypeName(rBase) = "Error" Then rBase = 3.5 / 100
Do
myI0 = Application.Match(CDbl(wkDate), Range(Rates, Rates.End(xlDown)))
If cNum > 2 Then rBase = Rates.Offset(myI0 - 1, 2).Value
myR0 = Rates.Offset(myI0 - 1, 1).Value + 1 + rBase
nDays = Rates.Offset(myI0, 0).Value - wkDate
If nDays < 0 Then nDays = enDate - wkDate
If nDays > (enDate - wkDate) Then nDays = enDate - wkDate
dRate = myR0 ^ (1 / 365)
iVal = iVal * (dRate ^ nDays)
wkDate = wkDate + nDays
If wkDate >= enDate Then Exit Do
Loop
aArr(1) = iVal
aArr(2) = iVal - i0
If aArr(2) > 0 Then
dRate = (iVal / i0) ^ (1 / (enDate - iDate))
aArr(3) = (dRate ^ 365) - 1
End If
fuValMulti = aArr
End Function
Il file dovra' poi essere salvato in formato ".xlsm" (macro enabled).
La sintassi della funzione:
=FuValMulti(AreaConDate/Interessi;IlValoreIniziale; DataIniziale[;DataFinale[;BaseInteressi]])
-AreaConDate/Interessi e' l'area che contiene in colonna 1 le date di inizio e in colonna 2 l'interesse annuo corrisposto. L'ultima riga dell'area deve essere necessariamente vuota. Si puo' usare l'intera colonna, es A:B. Se si dichiara un'area di 3 colonne allora la terza colonna sara' usata come BaseInteressi, che quindi ptra' variare per ognuno dei periodi di cui si dichiara il tasso di interesse.
-IlValoreIniziale e' il capitale iniziale
-DataIniziale e' la data in cui il capitale viene messo a disposizione
-DataFinale (opzionale) e' la data in cui si deve smettere di calcolare gli interessi; se omessa sara' calcolata pari a "Oggi"
-BaseInteressi (opzionale) e' la base fissa da sommare a quanto descritto in AreaConDate/Interessi; se omessa sara' calcolato pari al 3.5%; tuttavia se AreaConDate/Interessi e' dichiarata di 3 colonne allora il valore della terza colonna sara' usato come BaseInteressi.
Esempi di formula
- Codice: Seleziona tutto
=FuValMulti(E:F;I1;J1;K1)
- Codice: Seleziona tutto
=FuValMulti(E:F;1000;"12-dic-2008";"12-gen-2009";2%)
(tuttavia si scoraggia di inserire date come Stringhe, la loro traduzione in date esatte non e' garantita da Excel)
- Codice: Seleziona tutto
=fuValMulti(E:F;1000;"12-dic-2008";;5%)
(data di fine pari a "Oggi", base interessi 5%)
- Codice: Seleziona tutto
=fuValMulti(E:G;1000;"12-dic-2008";;5%)
(data di fine pari a Oggi, base interessi prelevata da colonna G nonostante sia inserita nella formula)
NB: la tabella date /Interessi deve essere diversa da quella pubblicata:
invia immaginiSi puo' ottenere da quella pubblicata, tramite filtro ed eliminazione delle righe vuote in colonna B.
La precedente tabella conteneva una data di "fine periodo", inutile (perche' il fine periodo corrisponde all'inizio del periodo successivo) e che rendeva la tabella di difficile fruizione.
La funzione restituisce una matrice orizzontale di valori che sono:
-il capitale+interesse alla DataFinale
-i soli interessi
-il tasso annuo medio
La formula puo' essere inserita in una sola cella e verra' restituito il capitale+interessi alla data finale; oppure in due celle e verra' restituito capitale+interessi e i soli Interessi; oppure in 3 celle e verra' restituito capitale+interessi, i soli Interessi e il tasso annuo medio equivalente.
Per inserire la formula in piu' celle la formula dovra' essere confermata con Contr-Maiusc-Enter.
Ovviamente e' possibile usare il risultato di FuValMulti per comporre formule piu' complesse insieme ad altre funzioni excel; es
- Codice: Seleziona tutto
=INDICE(fuValMulti(E:F;1000;"12-dic-2008";;5%);3)
Questa restituira' il solo tasso annuo medio equivalente
Spero sia di qualche utilita'...