Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Macro Calcolo Interessi

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Macro Calcolo Interessi

Postdi Fadeto » 15/03/17 16:54

Buonasera,
ho una colonna excel, contenente delle date di scadenza pagamento. Per ogni data devo calcolare il TUR+3,5% che è dato dalla somma di un tasso fisso (3,5%) ed uno variabile, che è funzione del periodo (ad esempio dal 01/01/2012 al 01/07/2012 vale 2%).
Al momento io sono in grado di:
1)Importare in una colonna dei periodi (che ho creato) la data che mi interessa;
2)calcolare gli interessi variabili;
3)sommare questi interessi alla parte fissa (3,5%);
4)calcolare l'interesse per quella data.

Il problema è che in questo modo riesco a calcolare solo un interesse per volta mentre a me interessa farlo per le n date.
Devo, quindi, farlo in maniera automatizzata ossia per ogni data ripetere il ciclo di azioni 1-2-3-4 ed avere i risultati in una colonna.
Ho pensato che ciò si può fare tramite una macro (magari utilizzando un ciclo "For") ma detto molto onestamente, sono nuovo del campo e gradirei se possibile qualche indicazione.
Grazie
Fadeto
Newbie
 
Post: 3
Iscritto il: 15/03/17 16:34

Sponsor
 

Re: Macro Calcolo Interessi

Postdi ricky53 » 15/03/17 17:33

Ciao,
prima di tutto benvenuto nel nostro forum.


Penso si possa fare anche con delle formule senza scomodare il VBA.

Se invii un file di esempio dove è riportato quello che hai fatto vediamo come risolvere.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4526
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Macro Calcolo Interessi

Postdi Fadeto » 15/03/17 18:31

Ciao Ricky,
grazie per l'accoglienza e per la risposta.
Sarebbe ottimo bypassare le macro e fare il tutto attraverso formule, come ho detto prima, non sono un fenomeno delle macro...
In ogni caso, ti riporto il link dove puoi trovare i miei allegati:
http://www.filedropper.com/calcolainteressi
In particolare "Step 0" è quello che ho all'inizio, prima di effettuare azioni; "Step 1" è il passaggio intermedio (calcolo della nuova colonna date e giorni intercorsi); "Step 2" è il calcolo degli interessi parziali e totali e successivo aggiornamento del foglio 2).
Fadeto
Newbie
 
Post: 3
Iscritto il: 15/03/17 16:34

Re: Macro Calcolo Interessi

Postdi ricky53 » 16/03/17 01:29

Ciao,
premesso che con il file mi si sono ancora di più confuse le idee, direi di schematizzare.

In tutta sincerità per quanto ho capito ti dico che NON mi piace l'approccio che hai dato al sistema di calcolo.



Procediamo per gradi per capire bene la tua necessità!

Obiettivo:
calcolare gli interessi tra due date di una certa somma, gli interessi sono costituiti da due contributi uno a tasso fisso (3,5%) nel tempo ed un altro a tasso variabile nel tempo.

Domande:
1. dove sono le date sulle quali fare i calcoli dei giorni
2. dove si trova l'importo del quale calcolare gli interessi
3. come è costituita la tabella del tasso variabile

Ho visto il "Foglio Calcoli" dovresti spiegare il significato delle informazioni contenute nelle colonne A, B e C ... qualcosa l'ho dedotto ma preferisco che sia tua a dire bene cosa rappresentano quelle informazioni

Capito quanto sopra pensiamo a come calcolare gli interessi.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4526
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Macro Calcolo Interessi

Postdi Fadeto » 16/03/17 14:59

Ciao Ricky, grazie per la risposta. In effetti non sono stato affatto chiaro...
allora le colonne A,B,C del "foglio calcoli" sono relative ai tassi variabili "finali" (ossia già sono la somma della parte variabile e quella fissa) e sono:
A) date "intervallo" dei periodi ossia una data e la sua sottostante definiscono un periodo;
B) valore del tasso nel determinato periodo (che inizia nella data sulla stessa riga e finisce nella data della riga sottostante);
C) conto dei giorni nel determinato periodo (che inizia nella data sulla stessa riga e finisce nella data della riga sottostante).

Per quanto riguarda le date da cui calcolare gli interessi sono le tre riportate nel "foglio date".

Per calcolare gli interessi, io prendo una delle 3 date dal "foglio date" e vado a sostituire questa data x in tutte le celle con data inferiore alla data x (utilizzo la funzione SE). In questo modo riesco sia ad aggiornare in maniera esatta il periodo da cui devo iniziare a calcolare gli interessi sia ad eliminare i periodi precedenti (che non devono rientrare nel calcolo degli interessi) in quanto il loro valore nella colonna "conto giorni" va a zero. Dopo procedo ad annullare i valori nelle celle della colonna "conto giorni" dove è pari ad 1. A questo punto calcolo gli interessi parziali, ossia del singolo periodo, come [("conto giorni" * "interesse" * 1000)/365]. Determinati gli interessi parziali, li sommo ed ottengo il totale. Con questo totale vado a riempire nel "foglio date" la cella "TUR+3,5%" collegata alla data x.

Questo è l'iter che avevo intenzione di riprodurre con la macro.

Grazie ancora
Fadeto
Newbie
 
Post: 3
Iscritto il: 15/03/17 16:34

Re: Macro Calcolo Interessi

Postdi Anthony47 » 17/03/17 02:28

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:
Immagine
invia immagini
Si 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'...
Avatar utente
Anthony47
Moderatore
 
Post: 17447
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Macro Calcolo Interessi":


Chi c’è in linea

Visitano il forum: Nessuno e 22 ospiti