Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

funzione TIR.COST

254 views
Skip to first unread message

Valerio

unread,
Dec 15, 2009, 9:52:02 AM12/15/09
to
Ciao a tutti,
il mio problema è che se provo a calcolare il TIR con la funzione tir.cost
di più di 60 flussi finanziari, excel non mi restituisce alcun risultato, ma
#num!
Io credo che si tratti di un limite di excel, ma volevo sapere se per caso
c'è qualcosa che mi sfugge.
Ho anche provato con l'office 2010 e lì non ho riscontrato lo stesso
problema, solo che sul pc aziendale ho il 2007.
La serie di flussi è la seguente se volete provare voi stessi:
110.000
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-2.058
-3.158

Mao

unread,
Dec 15, 2009, 10:24:04 AM12/15/09
to
On Tue, 15 Dec 2009 06:52:02 -0800, Valerio
<Val...@discussions.microsoft.com> wrote:

>il mio problema � che se provo a calcolare il TIR con la funzione tir.cost
>di pi� di 60 flussi finanziari, excel non mi restituisce alcun risultato, ma

>#num!
>Io credo che si tratti di un limite di excel, ma volevo sapere se per caso

>c'� qualcosa che mi sfugge.
>Ho anche provato con l'office 2010 e l� non ho riscontrato lo stesso

>problema, solo che sul pc aziendale ho il 2007.

>La serie di flussi � la seguente se volete provare voi stessi:

Se come guess metti un valore tipo 0.2% ottieni 0.414%...
senza ottengo #NUM.

Con aiutino ce la fa :)

MAO
--
MAO web...@occupato.it (liberami x scrivermi)
Nuovo aritcolo, corri a leggerlo - classifica automatica http://www.riolab.org/index.php?view=article&id=207
"i troni sono stati creati per innalzare gli idioti" (KINA)
--

paoloard

unread,
Dec 15, 2009, 11:46:48 AM12/15/09
to

"Valerio" <Val...@discussions.microsoft.com> ha scritto nel messaggio
news:4ED49CBB-B5F0-406C...@microsoft.com...

> Ciao a tutti,
> il mio problema è che se provo a calcolare il TIR con la funzione tir.cost
> di più di 60 flussi finanziari, excel non mi restituisce alcun risultato,
> ma
> #num!
> Io credo che si tratti di un limite di excel, ma volevo sapere se per caso
> c'è qualcosa che mi sfugge.
> Ho anche provato con l'office 2010 e lì non ho riscontrato lo stesso
> problema, solo che sul pc aziendale ho il 2007.

La funzione TIR.COST(range;ipotesi) restituisce un risultato approssimato
allo 0,00001%; se dopo 20 tentativi non lo trova restituisce l'errore #NUM!.
In questi casi occorre valorizzare il secondo argomento "ipotesi" con un
valore prossimo al risultato atteso in modo da limitare il numero delle
iterazioni.
Nel tuo caso ottieni un risultato se ad "ipotesi" attribuisci valori da 0,1%
a 7,0%, in quanto prossimi al risultato dello 0,4139% che restituisce la
funzione. Veramente mi viene difficile pensare che 7% sia un valore prossimo
al risultato, ma tant'è, funziona.
Ovviamente, nel definire "ipotesi" occorre andare per tentativi.
--
ciao paoloard
http://riolab.org

plinius

unread,
Dec 15, 2009, 8:27:20 PM12/15/09
to

"Valerio" <Val...@discussions.microsoft.com> ha scritto nel messaggio
news:4ED49CBB-B5F0-406C...@microsoft.com...
> Ciao a tutti,
> il mio problema � che se provo a calcolare il TIR con la funzione tir.cost
> di pi� di 60 flussi finanziari, excel non mi restituisce alcun risultato,
> ma
> #num!
> Io credo che si tratti di un limite di excel, ma volevo sapere se per caso
> c'� qualcosa che mi sfugge.
> Ho anche provato con l'office 2010 e l� non ho riscontrato lo stesso

> problema, solo che sul pc aziendale ho il 2007.
[cut]

Questa funzione home-made non ha bisogno di suggerimenti, le basta il range:
*******************************************
Function TIRCOST(rng As Range)
Const Toll = 0.01
Dim n As Long
Dim I As Double, OldI As Double, TmpI As Double
Dim VA As Double, OldVa As Double
Dim cc As Range
For Each cc In rng
OldVa = OldVa + cc
Next
OldI = 0
I = -0.1 * Sgn(OldVa)
Do
VA = 0
n = 0
For Each cc In rng
n = n + 1
VA = VA + cc * (1 + I) ^ -n
Next
If Abs(VA - OldVa) < Toll Then Exit Do
TmpI = I
I = I - VA * (I - OldI) / (VA - OldVa)
OldVa = VA
OldI = TmpI
Loop
TIRCOST = I
End Function
*******************************************

'notte,
E.


0 new messages