Ed ecco il... QUESITO n. 5
Scrivere una UDF che, sulla base dei parametri posti in B3 (numero rate), B4
(valore attuale del prestito) e B5 (importo della rata costante posticipata)
calcoli il tasso d'interesse applicato al mutuo. Dia cioè, come risultato,
lo stesso valore che nel mio foglio di excel è già presente in B2.
=TA(B3;B4;B5)
deve restituire 6% ma se la rata dovesse essere pari o inferiore ad A/n
(cioè alla semplice divisione "importo del prestito / numero di annualità",
deve restituirmi un testo nella cella "Dati errati". Ovvio che nessuno mi fa
un prestito gratis o addirittura regalandomi soldi!!
La risposta al quesito è il testo della UDF, a partire da "Function..." e
fino a "End Function".
Buon lavoro!
E.
Function fTasso(vPeriodo, vPagamento, vValoreAttuale)
If vPagamento > (vValoreAttuale / vPeriodo) Then
fTasso = Application.Rate(vPeriodo, vPagamento, vValoreAttuale)
Else
fTasso = "Dati errati"
End If
End Function
vediamo cosa mi dici :-)
r
****************************
Dico che, come primo della classe, rispondendo prima di 2 ore perdi 5 punti
(il regolamento lo hai scritto tu eheh :-))
E aggiungo che, naturalmente, l'uso della funzione TASSO l'ho esclusa nel
porre il quesito e, quindi, la risposta non va bene!
...perň... considerando che questa NON č una risposta, penso che tu possa
farla franca sulla penalizzazione per questa volta ... va!!! :-)
E.
beh ... un punticino perchè sono stato simpatico :-) ... no Eh.
... ci vorrebbe scossa ... è lui l'esperto di ammortamenti ...
tassi ... watt :-)
r
******************************
Punti simpatia il regolamento purtroppo non ne prevede, mannaggia! :-(
Comunque la risposta non prevede alcuna conoscenza di formule: quelle le ho
già date io.
Serve di scovare un algoritmo per ricavare quella dispettosa "i" dalla
formula...
Coraggio!
E. :-)
cut
******************************
Punti simpatia il regolamento purtroppo non ne prevede, mannaggia! :-(
Comunque la risposta non prevede alcuna conoscenza di formule: quelle le ho
già date io.
Serve di scovare un algoritmo per ricavare quella dispettosa "i" dalla
formula...
Coraggio!
E. :-)
---------------------------------------------------------------------
Io avevo pensato all'algoritmo/logaritmo, ma i miei ricordi di analisi
matematica sono ormai relegati nel più profondo dei profondi.
Dalla formula originale della rata
R= A*i/(1-(1+i)^-n)
deriva
LogR = Log A + Log i - Log (1-(1+i)^-n)
però lo sviluppo del terzo logaritmo, ammesso che sia possibile, mi è oscuro
come la Morte Nera.
Chissà se la nostra cara amica Gio ha un asso nella manica.
ciao paoloard
http://www.riolab.org
Infatti Paolo, non si riesce neppure con i logaritmi ad estrarre quella "i"
imprigionata.
Bisogna far ricorso ad un metodo che, partendo da un tasso arbitrario, ci
consenta di avvicininarci, per iterazioni successive, a quello reale.
Anche la funzione nativa TASSO segue questa via e, a questo scopo, prevede
un parametro opzionale (il 6°) che è il tasso presunto. Serve per arrivare
prima a quello vero...
Ciao,
E. :-)
io ci provo ... ma di matematica finanziaria ci capisco una fava ...
poi non specifichi quanto l'arrotondamento ...
boh ... ecco lo schifo :-)
Function fTasso(n, R, A, Optional i = 1)
Dim v
If R > A / n Then
v = A * i / (1 - (1 + i) ^ -n)
If VBA.Round(v, 2) = VBA.Round(R, 2) Then
fTasso = VBA.Round(i, 2)
ElseIf v > R Then
fTasso = fTasso(n, R, A, i * 0.9)
Else
fTasso = fTasso(n, R, A, i * 1.1)
End If
Else
fTasso = "Dati errati"
End If
End Function
r
boh ... giusto per gestire gli errori
Function fTasso(n, R, A, Optional i = 1)
Dim v
On Error GoTo esci
If R > A / n Then
v = A * i / (1 - (1 + i) ^ -n)
If VBA.Round(v, 2) = VBA.Round(R, 2) Then
fTasso = VBA.Round(i, 2)
ElseIf v > R Then
fTasso = fTasso(n, R, A, VBA.Round(i * 0.9, 2))
Else
fTasso = fTasso(n, R, A, VBA.Round(i * 1.1, 2))
End If
Else
fTasso = "Dati errati"
End If
Exit Function
esci:
fTasso = CVErr(2036)
End Function
saluti
r
curiosita ... excel 2007 in presenza di un errore:
Spazio dello stack esaurito (errore 28)
se vai al debug ... se ne va in crash!
fantastico!
r
saluti
r
****************************
Direi che funziona per avere tassi arrotondati all'unità percentuale, ma il
risultato che desidero è quello esatto, con la precisione di un double.
E. :-(
>
> Ed ecco il... QUESITO n. 5
>
> Scrivere una UDF che,
uuuhhh ...
Dunque:
1. Arrivo solo ora e, in ogni caso avrei trovato ormai tutto fatto!
2. Che brutto quesito! :-) :-)
3. Che bello, si chede una UDF e io non me ne intendo!!!
Augurandomi di poter partecipare al prox, bye!
--
ciao
giovanna
.......................
www.riolab.org
.........................
Ciao plinius,
non hai specificato la precisione richesta, comunque provo a buttarla
lì (specifico subito che se dovessi proporre io il prossimo quiz
potrei farlo solo durante il weekend):
'in un modulo standard
'----------------------
Public Function Ta(ByVal n As Long, ByVal Cap As Currency, ByVal R As
Currency) As Double
Dim nTX As Double
Dim nI As Long
Dim nFat As Double
Dim nloop As Long
Dim nRata As Currency
Dim i As Double
nFat = 0.00001
i = 0.05
R = Round(R, 2)
Do While nloop < 10000 And nRata <> R
nRata = Round(Cap * i / (1 - (1 + i) ^ -n), 2)
If nRata > R Then
i = i - nFat
Else
i = i + nFat
End If
nloop = nloop + 1
Loop
Ta = Round(i, 4)
End Function
Bye!
Scossa
ovviamente si possono togliere queste due dichiarazioni (sono due
variabili che non ho usato).
Bye!
Scossa
ciao a tutti,
approfitto del vs. quesito per un chiarimento:
la formula =((B5*B3)/B4-1)/B3 dà 3,59%
Questo cos'e', l'interesse annuo, il tasso annuo o cos'altro ???
Scusate l'intrusione e buona serata... e vinca il migliore!
umberto
Ma non si tratta di un quesito finanziario... con un po' di riflessione si
puň affrontare tranquillamente!
Perň... capisco che non č un genere ben accetto e allora prometto: non lo
faccio piů! :-(
Come previsto dal regolamento, se non ci saranno soluzioni, tra due giorni
darň la mia.
Ciao,
E.
Bye!
Scossa
************************
La precisione che desidero e almeno pari a quella della funzione nativa che
restituisce 10 cifre decimali percentuali esatte (quindi 12 reali).
La tua UDF restituisce 2 cifre (percentuali) decimali esatte.
Certo diminuendo il valore di nFat si può aumentare la precisione, ma
diventa sempre più lenta e perciò difficilmente accettabile.
Però... rendendo flessibile quel nFat... una delle vie percorribili è
quella! :-)
Ciao,
E.
Così?
'-----------------------------
Public Function Ta(ByVal n As Long, ByVal Cap As Double, ByRef R As
Double) As Double
Dim nFat As Double
Dim nloop As Long
Dim nRata As Double
Dim i As Double
nFat = 0.00001
i = 0.050
Do While Abs(R - nRata) > 0.0000000001 And nloop < 10000
nRata = Cap * i / (1 - (1 + i) ^ -n)
Select Case Abs(R - nRata)
Case Is < 0.0000001
nFat = 0.000000000001
Case Is < 0.000001
nFat = 0.00000000001
Case Is < 0.00001
nFat = 0.0000000001
Case Is < 0.0001
nFat = 0.00000001
Case Is < 0.001
nFat = 0.0000001
Case Is < 0.01
nFat = 0.000001
Case Is > 1
nFat = 0.00001
Case Is > 10
nFat = 0.0001
Case Else
nFat = 0.000001
End Select
If nRata > R Then
i = i - nFat
'nFat = nFat / 10
ElseIf nRata < R Then
i = i + nFat
Else
Exit Do
End If
nloop = nloop + 1
Loop
Ta = Round(i, 10)
End Function
'--------------------
Bye!
Scossa
P.S.: le celle del capitale e della rata passate come argomento alla
UDF devono essere formattate come numero con 10 decimali, altrimenti
se formattate come "valuta" sono arrotondate a 4 decimali.
P.S.2: ByRef R As Double correggasi in ByVal R as double
Versione rivista, con possibilià di passare come argomento opzionale
il n.ro di iterazioni massimo e di restituire come risultato una
matrice con tasso i, n.ro iterazioni eseguite e rata calcolata
(semplicemente selezionando 3 celle contigue p.e. D1 E1 F1 digitando
=Ta(B3;B4;B5;5000) e confermando con ctrl+maiusc+invio)
'----------------------------
Public Function Ta(ByVal n As Long, ByVal Cap As Double, _
ByVal R As Double, Optional ByVal Ite As Long = 10000) As Variant
Dim nFat As Double
Dim nloop As Long
Dim nRata As Double
Dim i As Double
nFat = 0.00001
i = 0.05
'R = Round(R, 10)
Do While Abs(R - nRata) > 0.0000000001 And nloop < Ite
Ta = Array(Round(i, 10), nloop, nRata)
End Function
'----------------------
Bye!
Scossa
"r" <robb...@gmail.com> ha scritto nel messaggio
cut
r
****************************
Direi che funziona per avere tassi arrotondati all'unità percentuale, ma il
risultato che desidero è quello esatto, con la precisione di un double.
E. :-(
----------------------------------------------------------------
Non è certo la risposta al quesito dato che chiede una UDF, ma solo per
soddisfare il mio inguaribile protagonismo, un modo per lanciare un calcolo
iterattivo senza codice è usare la funzione fornita da Excel che è la
Ricerca Obiettivo e il gioco è fatto.
Please, non ditemi che non sono in tema, lo so già da me! :-)
Ciao a tutti
--------------------------------------------------------------
Questa è una formula astrusa per ottenere il tasso di investimento di un
capitale per un anno; quindi non ha a che vedere con pagamenti periodici.
La formula sarebbe:
M = C*(1+it)
dove
M è il montante (capitale + interessi) e tu hai fatto B5*B3 che non è altro
che il totale delle rate pagate
C è il capitale iniziale
i è il tasso annuo nominale
t è il tempo d'impiego (nel ns. caso n ovvero numero di pagamenti)
da cui:
i = (M-C)/C*t che tradotto in riferimenti di cella
i = (B5*B3-B4)/B4*B3
che è uguale a 3,59%
ciao paoloard
http://www.riolab.org
"umbeumbe" ha scritto nel messaggio
cut
ciao a tutti,
approfitto del vs. quesito per un chiarimento:
la formula =((B5*B3)/B4-1)/B3 dà 3,59%
Questo cos'e', l'interesse annuo, il tasso annuo o cos'altro ???
Scusate l'intrusione e buona serata... e vinca il migliore!
umberto
--------------------------------------------------------------
Questa è una formula astrusa per ottenere il tasso di investimento di un
capitale per un anno; quindi non ha a che vedere con pagamenti periodici.
La formula sarebbe:
M = C*(1+it)
dove
M è il montante (capitale + interessi) e tu hai fatto B5*B3 che non è altro
che il totale delle rate pagate
C è il capitale iniziale
i è il tasso annuo nominale
t è il tempo d'impiego (nel ns. caso n ovvero numero di pagamenti)
da cui:
i = (M-C)/C*t che tradotto in riferimenti di cella
i = (B5*B3-B4)/B4*B3
che è uguale a 3,59%
ciao paoloard
http://www.riolab.org
-------------------------------------------------
oddio ho quotato male... adesso chi la sente!?! :-((
paoloard
http://www.riolab.org
Function fTasso(n, R, A, Optional i = 1)
On Error GoTo esci
****************************
UDF
???
---------------------------
Mauro Gamberini
Microsoft MVP - Excel
http://www.riolab.org/
http://www.maurogsc.eu/
End Function
'----------------------
Bye!
Scossa
******************************
Ciao electric!
La strada è giusta, ma non porta al risultato voluto fintantoché la misura
di incremento o decremento del tasso ipotetico sia determinata per
scaglioni. Per avere la necessaria flessibilità deve essere calcolata.
Supponiamo che il rapporto A/n sia 1000: ne deduco che se non pagassi
interessi (tasso 0) la rata sarebbe 1000.
Mettiamo che la rata reale sia, invece, 1400.
Ipotizziamo un tasso unitario arbitrario 0,05 (5%) e otteniamo una rata di
1300.
Possiamo dire che una variazione della tara di +400 (1400-1000), la si è
ottenuta variando il tasso di +0,05 (0,05-0)
Ora, volendo aumentare la rata di ulteriori 100 euro, imposto la
proporzione:
400 : 0,05 = 100 : x
x è la variazione da apportare a 0,05 per cercare di ottenere 1400.
Dal momento che non c'è una proporzionalità lineare tra i due elementi, non
otterrò realmente una rata di 1400, ma mi avvicino a 1400.
Ma posso iterare e avvicinarmi, passo per passo, sempre di più...
;-)
E.
[cut]
Bye!
Scossa
********************
Correggo qualche errore di digitazione, mannaggia!
Leggi qui, non sopra!! :-((
Ciao electric!
La strada è giusta, ma non porta al risultato voluto fintantoché la misura
di incremento o decremento del tasso ipotetico sia determinata per
scaglioni. Per avere la necessaria flessibilità deve essere calcolata.
Supponiamo che il rapporto A/n sia 1000: ne deduco che se non pagassi
interessi (tasso 0) la rata sarebbe 1000.
Mettiamo che la rata reale sia, invece, 1400.
Ipotizziamo un tasso unitario arbitrario 0,05 (5%) e otteniamo una rata di
1300.
Possiamo dire che una variazione della rata di +300 (1300-1000), la si è
ottenuta variando il tasso di +0,05 (0,05-0)
Ora, volendo aumentare la rata di ulteriori 100 euro, imposto la
proporzione:
300 : 0,05 = 100 : x
CUT
> Dal momento che non c'è una proporzionalità lineare tra i due elementi, non
> otterrò realmente una rata di 1400, ma mi avvicino a 1400.
> Ma posso iterare e avvicinarmi, passo per passo, sempre di più...
Scusa plinius,
qui c'è il file:
https://rapidshare.com/files/460885540/Quiz5.xls
io ho provato vari valori di tasso e anche a variare il capitale o il
numero di rate e hosempre ottenuto il tasso preciso al 10 decimale.
Giusto per capire, mi fai un esempio di valori per i quali la udf
fallisce?
Bye!
Scossa
Come non detto: ho provato ad inserire un tasso a 6 decimali
(6,1234560000%) ed in effetti il tasso calcolato si ferma al 5
(6,1234500000%)
Bye!
Scossa
il problema è proprio l'algoritmo per calcolare il delta da aggiungere
o togliere al tasso ... il metodo della bisezione mi sembra possa
funzionare ma ... io mi sono fissato con una ricorsiva e mi
impantano ... ho anche avuto e ho poco tempo ... diciamo che il
problema comunque non è semplice partendo da zero ... beh guarderò la
tua soluzione ... sono molto interessato all'algoritmo per il
delta ...
ciao
r
CUT
Scusa plinius,
https://rapidshare.com/files/460885540/Quiz5.xls
Bye!
Scossa
**************
Sul mio foglio il risultato viene sempre arrotondato alla quarta cifra
percentuale, anche modificando la formattazione delle celle con rata e
capitale.
Poi, francamente, non vedo il motivo di una "Select Case" per attribuire
valori che possono essere più rapidamente ed efficacemente calcolati in modo
preciso.
Perché non provi a seguire la traccia che ho proposto?
Ciao,
Enrico :-)
il problema č proprio l'algoritmo per calcolare il delta da aggiungere
o togliere al tasso ... il metodo della bisezione mi sembra possa
funzionare ma ... io mi sono fissato con una ricorsiva e mi
impantano ... ho anche avuto e ho poco tempo ... diciamo che il
problema comunque non č semplice partendo da zero ... beh guarderň la
tua soluzione ... sono molto interessato all'algoritmo per il
delta ...
ciao
r
***************************
In effetti ci sono almeno due metodi diversi per raggiungere lo scopo.
Del secondo (che č anche piů interessante) ne parleremo dopo, ma per ora,
seguendo il percorso avviato da te e da Scossa, credo di aver dato un ottimo
spunto nel post qui sopra (quello delle 12:06).
La funzione, puň essere anche impostata come ricorsiva, ma anche no.
Una semplice iterazione funziona a meraviglia...
Ciao,
E. :-)
Perchè altrimenti come fa roby a tagliare? :-)
> Perché non provi a seguire la traccia che ho proposto?
Ok, ci studio su!
Bye!
scossa
Ci riprovo:
'--------------------------
Public Function Ta(ByVal n As Long, ByVal Cap As Double, _
ByVal R As Double, Optional ByVal Ite As Long = 10000) As Variant
Dim nFat As Double
Dim nloop As Long
Dim nRata As Double
Dim nRata0Int As Double
Dim i As Double
Dim nIntR As Double
Dim nIntI As Double
nFat = 0.00001
i = 0.05
nRata0Int = Cap / n
nIntR = R - nRata0Int
Do While Abs(R - nRata) > 0.00000000001 And nloop < Ite
nRata = Cap * i / (1 - (1 + i) ^ -n)
nIntI = nRata - nRata0Int
i = i * nIntR / nIntI
nloop = nloop + 1
Loop
Ta = Array(i, nloop, nRata)
End Function
'---------------------
> Do While Abs(R - nRata) > 0.00000000001 And nloop < Ite
In realtà sono sufficienti poche iterazioni.
Bye!
Scossa
mi sembra che hai fatto centro!
aspettiamo il responso di E
ciao
r
Dunque cominciamo dalle buone notizie: la risposta al quesito la ritengo
valida e proclamo Scossa vincitore del Quizzone n. 5!!! :-)))
Poi cominciamo con qualche osservazione.
Questa è la tua UDF nella quale ho inserito 600000 iterazioni al posto di
10000 ed ho sostituito l'ugaglianza assoluta a quella limitata.
Se leggi nella finestra immediata quante iterazioni svolge con un tasso
"diciamo" difficile come 4,23567890123565% vedrai che raggiunge il limite di
600000 (dando quindi un risultato appena un po' impreciso).
-----------------------------
Public Function Tasc(n As Long, Cap As Double, _
R As Double, Optional Ite As Long = 600000) As Variant
Dim nloop As Long, nRata As Double, nRata0Int As Double
Dim i As Double, nIntR As Double, nIntI As Double
i = 0.05
nRata0Int = Cap / n
nIntR = R - nRata0Int
Tasc = "Dati errati"
If R <= nRata0Int Then Exit Function
Do While Abs(R - nRata) > 0 And nloop < Ite
nRata = Cap * i / (1 - (1 + i) ^ -n)
nIntI = nRata - nRata0Int
i = i * nIntR / nIntI
nloop = nloop + 1
Loop
Tasc = Array(i, nloop, nRata)
Debug.Print "n. iterazioni: "; nloop
End Function
----------------------------
La spiegazione sta nel fatto che rideterminare direttamente il nuovo tasso,
piuttosto che l'aumento o la diminuzione di esso, NON porta a quella
riduzione dell'ordine di grandezza sul quale si lavora che a sua volta causa
il progressivo affinamento che conduce all'esito totalmente esatto.
Questa sotto, lavora invece sul "delta" (positivo o negativo) da sommare al
precedente valore provato:
---------------------------
Function i(n As Long, A As Double, R As Double) As Variant
Dim iold As Double, itmp As Double
Dim Rold As Double, Rnew As Double, c As Long
i = "Dati errati"
If R <= A / n Then Exit Function
Rold = A / n
i = 0.1
Do Until Rnew = R
Rnew = A * i / (1 - (1 + i) ^ -n)
If Rnew = Rold Then Exit Do
itmp = i + (R - Rnew) / (Rnew - Rold) * (i - iold)
c = c + 1
If c > 600000 Then Exit Do ' opzionale
iold = i: i = itmp: Rold = Rnew
Loop
Debug.Print c
End Function
------------------------------
Con quel tasso "difficile" (4,23567890123565%) la tua fa 600000 iterazioni,
questa ne fa 9 per arrivare alla perfetta uguaglianza.
Cionondimeno la tua UDF ottiene il risultato con sufficiente approssimazione
e, ritengo, debba essere considerata valida!!
.... poi c'è l'altro metodo che, pur avendo qualche problema su tassi vicini
allo 0 (che mai si verificheranno nella realta concreta), è simpaticissimo
da scoprire e estremamente agevole da tradurre in codice.
Se volete ve lo illustro...
Ciao,
E. :-)
da vai ... ora sono curioso ...
poi vai anche da qualche altra parte ... :-)
r
**********************
andrei subito da un'altra parte, che ne dici?
prrr :-))
E.
Alè!!
>
> Poi cominciamo con qualche osservazione.
> Questa la tua UDF nella quale ho inserito 600000 iterazioni al posto di
> 10000 ed ho sostituito l'ugaglianza assoluta a quella limitata.
> Se leggi nella finestra immediata quante iterazioni svolge con un tasso
> "diciamo" difficile come 4,23567890123565% vedrai che raggiunge il limite di
> 600000 (dando quindi un risultato appena un po' impreciso).
Ma la mia come l'ho scritta raggiunge in sole 12 iterazioni la
precisione fino alla 13 cifra decimale, mentre TASSO di Excel sbaglia
alla grande:
tasso inserito: 4,23567890123565%
tasso mia UDF: 4,23567890123569%
TASSO(B3;B5;-B4): 4,23567890131475%
>
> La spiegazione sta nel fatto che rideterminare direttamente il nuovo tasso,
> piuttosto che l'aumento o la diminuzione di esso, NON porta a quella
> riduzione dell'ordine di grandezza sul quale si lavora che a sua volta causa
> il progressivo affinamento che conduce all'esito totalmente esatto.
Giusto.
>
> Questa sotto, lavora invece sul "delta" (positivo o negativo) da sommare al
> precedente valore provato:
> ---------------------------
> Function i(n As Long, A As Double, R As Double) As Variant
> Dim iold As Double, itmp As Double
> Dim Rold As Double, Rnew As Double, c As Long
> i = "Dati errati"
> If R <= A / n Then Exit Function
> Rold = A / n
> i = 0.1
> Do Until Rnew = R
> Rnew = A * i / (1 - (1 + i) ^ -n)
> If Rnew = Rold Then Exit Do
> itmp = i + (R - Rnew) / (Rnew - Rold) * (i - iold)
> c = c + 1
> If c > 600000 Then Exit Do ' opzionale
> iold = i: i = itmp: Rold = Rnew
> Loop
> Debug.Print c
> End Function
> ------------------------------
Interessante, grazie per lo spunto
>
> .... poi c' l'altro metodo che, pur avendo qualche problema su tassi vicini
> allo 0 (che mai si verificheranno nella realta concreta), simpaticissimo
> da scoprire e estremamente agevole da tradurre in codice.
> Se volete ve lo illustro...
>
Non pubblico il mio quiz se non ci togli questa curiosità :-)
Bye!
Scossa
ma LOLLLLL!
dai spara! che scossa ha minacciato ritorsioni al Quizzone :-)
r
Sparo!! :-)
Come sappiamo la formula per avere la rata di ammortamento è la seguente
R=A*i/(1-(1+i)^-n)
Da questa formula è impossibile isolare la "i" per ricavarla, ma è invece
possibile scriverla nella forma
i=R/A*(1-(1+i)^-n)
Con i dati del nostro esempio
A = 10000
n = 10
I = 0,06 (6%)
R = 1358,68
avremmo:
i=1358,68/10000*(1-(1+i)^-10)
Ora è evidente che se nella parte dx della formula inserissi al posto di "i"
il valore 0,06, la "i" a sx dell'uguale assumerebbe correttamente lo stesso
valore (0,06).
Ma che succede se inserisco invece a dx un valore a caso?
Si dimostra (ma non lo dimostreremo noi qui) che il valore assunto dalla "i"
a sx è un valore intermedio tra quello inserito e quello vero.
Da questo ne deriva che se riprendo il valore ottenuto e lo pongo di nuovo a
dx mi avvicino ulteriormente... e così via!
Quindi bastano queste poche righe:
-----------------
Function Ta(n As Long, A As Double, R As Double) As Variant
Dim i As Double, c As Long
Ta = "Dati errati"
If R <= A / n Then Exit Function
Ta = 0.1
Do Until Ta = i
i = Ta
Ta = R / A * (1 - (1 + i) ^ -n)
c = c + 1
If c > 600000 Then Exit Do 'opzionale
Loop
End Function
--------------------------------
per ottenere quanto voluto.
Unico inconveniente che se il tasso fosse prossimo allo 0 (per esempio,
0,0001%) raggiungerebbe le 600000 iterazioni.
Da ciò l'esigenza di uscire dalla routine per non bloccare il PC qualora
malauguratamente venissero dati in pasto alla funzione dati strani.
Invece con tassi normali (per esempio 6%) gli bastano 97 iterazioni.
Sfizioso? :-)))
Ciao,
E.
> Sfizioso? :-)))
molto ... e molto interessante ...
ok ora vai ...
:-)
r
....e chi viene con me?? :-))
E.
prova a chiedere a mauro ... ha bisogno d'affetto ... :-)
r
No no, non vorrei irrompere brutalmente nei suoi "affetti"... :-))
Vado solo ch'č meglio!
E. :-)
No no, non vorrei irrompere brutalmente nei suoi "affetti"... :-))
Vado solo ch'è meglio!
**********************************
Io leggo sempre tutto, SAPPIATELO!!!
;-)
Eccerto! È per quello che lo scriviamo... :-)
>
> oddio ho quotato male... adesso chi la sente!?! :-((
:D
Paolone, ti sei salvato solo per aver preso coscienza dell'errore!
ihihih!
--
ciao
giovanna
.......................
www.riolab.org
.........................
Ma io per proporre il Quiz n. 6 aspetto la chiusura ufficiale del 5
su:
https://sites.google.com/site/e90e50/documento-plinius/quizzone-di-excel
P.S.: dal regolamento non si evince se il quiz deve limitarsi ad un
solo problema o se può contenerne anche due tra loro in qualche modo
correlati.
Bye!
scossa
paoloard ci ha detto :
fiuuuuuu... all'ultimo secondo la domanda di grazia è stata accolta! :-)
ciao paoloard
http://www.riolab.org
dai muoviti ... senza tante storie!
siamo in un Quizzone libero :-)
r