PROBLEMA URGENTE LOGARITMO
Hai un problema con Excel? 
PROBLEMA URGENTE LOGARITMO
di Valvolino78 (utente non iscritto) data: 12/10/2013 10:05:05
Buongiorno a tutti,
ho un problema con la sintassi del logaritmo in base N di X.
Mi occorre in un codice per lo sviluppo di un piano di ammortamento con durata ignota (il logaritmo mi occorre appunto per calcolare la durata).
Ho razzolato a lungo sul web, ma senza soluzione.
Vi posto di seguito i codici incriminati.
Purtroppo non capisco dove sia l'errore.
In sostanza, per farvi capire, ho necessità di una formula per il calcolo del logaritmo, in cui argomento e base non siano espressi in numeri (nella formula in vba), bensì con il nome di una delle variabili dichiarate, perché ovviamente non posso sapere quali saranno, volta per volta, né la base (che è pari a (1+i), dove i è il tasso di ammortamento), né l'argomento (che è R/(R-K*i), dove R è la rata e K il capitale da restituire).
Sono arenato!
Grazie a tutti in anticipo.
Val
PRIMA PROVA:
Dim logvalue as double
Dim N as double 'base del logaritmo
Dim X as double 'argomento del logaritmo
logvalue = log(X, N)
In questo primo caso l'errore è "Numero errato di argomento o assegnazione non valida". Stesso errore anche se sostituisco le lettere con i numeri e anche se converto le lettere es. Val(X), etc..
Se poi utilizzo la formula
logvalue = application.worksheetfunction.log(X, N)
l'errore è "impossibile trovare la proprietà log per la classe application..."
Ho trovato sul web un'altra sintassi per il calcolo del logaritmo, che è questa:
(supponiamo che N = 3 e X = 10000)
logvalue = log(10000) / log(3#)
e funziona, calcola il logaritmo in base 3 di 10000.
Bene direte voi...sì, ma quando vado a sostituire i numeri con le lettere, quindi
logvalue = log(X) / log(N#)
l'errore arriva ed è "Il carattere di dichiarazione tipo non corrisponde al tipo di dati dichiarato".
Se allora elimino il #, l'errore diventa "chiamata di routine o argomento non validi"
Chiaramente in tutti i casi ho provato Val(X), etc., ma senza alcun risultato utile.
|
di patel (utente non iscritto) data: 12/10/2013 15:19:00
le variabili devono essere dichiarate e definite, vedrai che così funziona
Sub a()
Dim logvalue As Double
Dim N As Double 'base del logaritmo
Dim X As Double 'argomento del logaritmo
N = 2
X = 5
logvalue = WorksheetFunction.Log(X, N)
End Sub |
il problema persiste
di Val (utente non iscritto) data: 12/10/2013 16:00:06
Intanto grazie della prima risposta.
Il problema però non si risolve, quantomeno nel codice dell'ammortamento, che a questo punto per brevità allego.
Grazie ancora a tutti.
Val
Il problema chiaramente è in DurataAmm.
Sub PDA()
Dim A As Double
Dim B As Double
Dim C As Double
Dim yrBegBall As Single
Dim yrEndBall As Single
Dim ratatt As Single
Dim intcomp As Single
Dim intrepay As Single
Dim outrow As Integer
Dim rownum As Integer
Dim outsheet As Integer
Dim N As Double
Dim X As Double
Dim Base As Double
Dim Valore As Double
Dim DurataAmm As Double
outrow = 5
Rows(outrow + 3 & ":" & outrow + 1000).Select
Selection.Clear
A = Range("B1").Value
B = Range("B2").Value
C = Range("B3").Value
If C > 0.15 Then
MsgBox "Tasso interesse oltre soglia 15%. Prego, re-inserire il tasso"
End If
Base = (1 + C)
N = Base
Valore = (B / (B - A * C))
X = Valore
DurataAmm = WorksheetFunction.Log(X, N)
yrBegBall = A
Cells(outrow + rownum + 3, 7).NumberFormat = "€ 0,0.00"
Cells(outrow + rownum + 3, 7).Value = A
For rownum = 1 To B
intcomp = yrBegBall * C
intrepay = ratatt - intcomp
yrEndBall = yrBegBall - intrepay
Cells(outrow + rownum + 3, 3).HorizontalAlignment = xlCenter
Cells(outrow + rownum + 3, 3).Value = rownum
Cells(outrow + rownum + 3, 4).Value = ratatt
Cells(outrow + rownum + 3, 5).Value = intcomp
Cells(outrow + rownum + 3, 6).Value = intrepay
Cells(outrow + rownum + 3, 7).Value = yrEndBall
yrBegBall = yrEndBall
Next rownum
Range(Cells(outrow + 4, 4), Cells(outrow + DurataAmm + 3, 8)).Select
Selection.NumberFormat = "€ 0,0.00"
Selection.VerticalAlignment = xlCenter
Selection.Font.Bold = False
Selection.RowHeight = 20
End Sub |
di patel (utente non iscritto) data: 12/10/2013 16:02:29
per brevità sarebbe meglio allegare il file oppure un link al file
allegato
di Val (utente non iscritto) data: 12/10/2013 16:16:42
Grazie
di patel (utente non iscritto) data: 12/10/2013 16:22:22
l'allegato non c'è
di patel (utente non iscritto) data: 12/10/2013 16:52:39
non è cliccabile, comunque dammi i valori delle celle B1,B2,B3
è normale che VALORE sia negativo ?
di patel (utente non iscritto) data: 12/10/2013 16:55:11
un altro modo di allegare è caricare il file su un sito di hosting tipo dropbox ... e postare il link
forse ho risolto io
di Val (utente non iscritto) data: 12/10/2013 17:19:17
Grazie!
Mi hai dato una indicazione non da poco...cui per non so quale ragione non avevo pensato.
Si che il valore è negativo e il log impossibile, perché la rata deve essere almeno 0,01 maggiore della quota interessi periodale, altrimenti il mutuo non sarà mai ammortizzato!
Ci lavoro sopra e ti dico.
PROBLEMA URGENTE LOGARITMO
di Val (utente non iscritto) data: 16/10/2013 11:39:27
Ho risolto grazie alla tua preziosa indicazione sull'argomento (negativo) del logaritmo.
Grazie!
Val
di patel (utente non iscritto) data: 16/10/2013 21:00:02
sarebbe gentile da parte tua allegare la soluzione
Vuoi Approfondire?