Io non sono riuscito a usare la TIR.X con intervalli cosi' discontinui; pertanto mi sono fatto la mia funzione ad hoc, che corrisponde a questo codice:
- Codice: Seleziona tutto
Function myTIRX(ByRef myVers As Range, ByRef myDates As Range, Optional ByVal Appr As Single = 0.1) As Variant
'Vedi http://www.pc-facile.com/forum/viewtopic.php?f=26&t=108028
'Funzione TIR.X per intervalli discontinui
'Uso:
' =myTIRX((IntervalloVers1,IntervalloVers2,...);(IntervalloDate1,IntervalloDate2,...); [opzionale:Approssimazione])
'
'Esempio: =myTIRX((A2:I2;A7:F7);(A1:I1;A6:F6))
'
Dim VArr() As Double, DArr() As Long, mVal As Range
'Vers in array:
ReDim VArr(1 To myVers.Count)
For Each mVal In myVers
i = i + 1
VArr(i) = mVal.Value
Next mVal
'Date in array:
i = 0
ReDim DArr(1 To myDates.Count)
For Each mVal In myDates
i = i + 1
DArr(i) = mVal.Value
Next mVal
myTIRX = Application.Xirr(VArr, DArr, Appr)
End Function
Il codice va inserito in un modulo standard del vba; per questo, partendo da Excel:
-premi Alt-F11 per aprire l'editor delle macro
-Menu /Inserisci /Modulo
-Copia il codice e incollalo nel frame dx del modulo appena creato
Poi sul foglio Excel scriverai una formula del tipo
=myTIRX((IntervalloVers1,IntervalloVers2,...);(IntervalloDate1,IntervalloDate2,...);[opzionale:Approssimazione])Esempio:
- Codice: Seleziona tutto
=myTIRX((A2:I2;A7:F7);(A1:I1;A6:F6))
Le aree discontinue vanno inserite tra parentesi; il parametro Approssimazione e' opzionale (potrebbe servire a velocizzare i calcoli, ma meglio lasciar fare a Excel che usara' il valore standard 0,1)
Le aree Versamenti e Date possono essere discontinue anche in modo differente tra loro, l'importante e' che la sequenza indicata in formula sia corretta (accoppiamento versamento /data) e il numero di voci sia lo stesso.
Ciao