Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

SIMULAZIONE MONTECARLO

Ultimo Aggiornamento: 04/07/2017 16:59
Post: 27
Registrato il: 15/01/2017
Città: MILANO
Età: 44
Utente Junior
excel 2016
OFFLINE
19/06/2017 21:33

Buongiorno a tutti,
avrei bisogno del vostro prezioso aiuto per creare una simulazione Montecarlo:

nel file allegato denominato "FRONTIERA", vorrei impostare il foglio "calcolo dati" identico al foglio "risultati2" dell'altro file dimostrativo (che sto cercando di copiare e riadattare alle mie esigenze)chiamato "Simulazione Montecarlo".

(Ho letto su internet che esiste una matrice per replicare la colonna D 201 volte. Nel caso qualcuno sa quale è?)


grazie a chi vorrà aiutarmi....
Post: 27
Registrato il: 15/01/2017
Città: MILANO
Età: 44
Utente Junior
excel 2016
OFFLINE
19/06/2017 22:20

Non riesco a caricare il secondo file. se lo comprimo in formato zip risulta comunque 5.166 KB. Come posso fare per postarlo?
Post: 5.198
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
20/06/2017 06:54

Simulazione montecarlo
Ciao per allegare file più grandi usa un sito di hosting tipo dropbox oppure http://www.filedropper.com/ poi inserisci il link che rialscia per l'accesso al file.

Ciao By Sal
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 28
Registrato il: 15/01/2017
Città: MILANO
Età: 44
Utente Junior
excel 2016
OFFLINE
20/06/2017 18:07

Perdonatemi, cerco di essere più chiaro: sto cercando, da neofita di excel, di adattare il file "Simulazione montecarlo" al mio file "FRONTIERA".

Tuttavia, una volta inserita la macro nel file "FRONTIERA", foglio "CALCOLA MONTECARLO", nelle colonne G2-G5, U2-U5, X2-X5 mi escono i valori #NUM!.

Non capisco cosa sto sbagliando visto che ho ricopiato la marco del file esemplificativo "Simulazione montecarlo".

Qualcuno può aiutarmi a capire cosa sbaglio?


allego i file:
[URL=

]

[Modificato da napo1985 20/06/2017 18:16]
Post: 1.404
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
20/06/2017 18:28

Ciao
premi F9 finchè gli errori non scompaiano.

Il problema è legato alla colonna B dove c'è:
=+CASUALE.TRA(0;10000)/10000

Se il numero casuale è 1, va in errore la col. C. Basta leggere l'help, che infatti dice relativamente a:
INV.NORM.N(Probabilità;Media;Dev_standard)

Se probabilità <=0 o probabilità >=1, INV.NORM.N restituirà il valore di errore #NUM!.


saluti
[Modificato da dodo47 20/06/2017 18:29]
Domenico
Win 10 - Excel 2016
Post: 29
Registrato il: 15/01/2017
Città: MILANO
Età: 44
Utente Junior
excel 2016
OFFLINE
23/06/2017 19:47

Bene, perfetto. Risolto.

Adessso vorrei fare un ultima cosa:

poichè le celle B2 e B3 del foglio Montecarlo sono collegate ai dati del foglio Frontiera, vorrei che al variare dei dati presenti in tali cell si aggiornasse in automatico sia tutto il foglio Montecarlo che il foglio Calcolo Montecarlo. E' possibile? se si come?

grazie
Post: 1.416
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
23/06/2017 20:24

ciao
non capisco...spiega dettagliatamente.

Nel foglio calcolo montecarlo non vedo formule (a parte la data)

Il foglio montecarlo varia qualsiasi cosa tu scriva (o venga elaborata) da qualsiasi parte in virtù dei CASUALI

saluti
Domenico
Win 10 - Excel 2016
Post: 30
Registrato il: 15/01/2017
Città: MILANO
Età: 44
Utente Junior
excel 2016
OFFLINE
24/06/2017 09:53

Si, hai ragione mi spiego meglio.

Ogni volta che faccio variare i dati delle celle B2-B3 del foglio 'Montercarlo', che sono a loro volta collegati alle celle L55-L56 del foglio 'Frontiera', vorrei che si creasse una nuova simulazione montecarlo.

Per far questo, quando vario i dati dellle celle B2 e B3, in automatico le celle da B10 a GT532 dovrebbero simulare nuovi scenari casuali.

Tali celle, attualmente, sono statiche in quanto create con una matrice; ecco io vorrei eseguire tale matrice nelle celle B10-GT532 ogni volta che cambio le celle B2 e B3.

fammi sapere se è più chiaro e se la cosa è fattibile.
Post: 1.418
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
24/06/2017 10:14

Ciao
si, ma qual è la formula che crea tali valori che ora sono statici?



Domenico
Win 10 - Excel 2016
Post: 31
Registrato il: 15/01/2017
Città: MILANO
Età: 44
Utente Junior
excel 2016
OFFLINE
24/06/2017 11:05

sono una copia della colonna D10-D532 del foglio 'Montecarlo', mediante la seguente matrice:


Sub montecarlo()
'
' montecarlo Macro
'
' Scelta rapida da tastiera: Opzione+Cmd+s
'
For i = 1 To 20
Sheets("MONTECARLO").Select
Columns("D:D").Select
Selection.Copy
Sheets("CALCOLO MONTECARLO").Select
Columns("B:B").Select
Selection.Insert Shift:=xlToRight
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Sheets("MONTECARLO").Select
Columns("D:D").Select
Next
End Sub


In altre parole, ho impostato da colonna D10-D532 del foglio 'Montecarlo' mediante la forumula =+D9+D9*C10, poi sono andato nel VBA e ho incollato la seguente macro, ed ho cliccato su esegui. Così facendo però si sono creati dei valori statici nel foglio 'Calcolo montecarlo'. Io vorrei, invece, che fossero dinamici (nel senso che dovrebbero variare ogni volta che variano le celle B2-B3 del folgio 'Montecalro')


[Modificato da napo1985 24/06/2017 11:43]
Post: 1.419
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
24/06/2017 12:04

ma perché lo fa per 20 volte?
Domenico
Win 10 - Excel 2016
Post: 32
Registrato il: 15/01/2017
Città: MILANO
Età: 44
Utente Junior
excel 2016
OFFLINE
24/06/2017 12:31

Avevo impostato inizialmente la seguente macro:

Sub montecarlo()
'
' montecarlo Macro
'
' Scelta rapida da tastiera: Opzione+Cmd+s
'
For i = 1 To 201
Sheets("MONTECARLO").Select
Columns("D:D").Select
Selection.Copy
Sheets("CALCOLO MONTECARLO").Select
Columns("B:B").Select
Selection.Insert Shift:=xlToRight
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Sheets("MONTECARLO").Select
Columns("D:D").Select
Next


Tuttavia, in alcune celle usciva il riultato #NUM! allora ho messo nella matrice 1 to 20 e l'ho ripetuta per dieci volte emilinando, manualmente, le colonne in cui vi erano valori #NUM!.




Post: 1.420
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
24/06/2017 12:50

ciao
non capisco perché devi copiare 200 volte la col D di montecarlo ed inserirla in calcolo montecarlo.

A parte questo, non possiamo usare l'evento change del foglio montecarlo perché tale evento funziona solo se una determinata cella viene cambiata manualmente, mentre le tue B2 B3 vengono cambiate da formule.

Si potrebbe sfruttare l'evento calculate del foglio ma accadrebbe che qualsiasi variazione avvenga (e ne avvengono di continuo a causa del CASUALE) , verrebbe eseguita la macro.

Quindi ci metti un pulsante che la esegue.

Per evitare di copiare la colonna quando ci nono #NUM! nelle celle da D2 a D5 all'inizio della tua macro inserisci un controllo.

Sub NuovaSimulazione()

Sheets("MONTECARLO").Select
For i = 2 To 5
   If IsError(Cells(i, 4)) Then Exit Sub
Next i
Application.Calculation = xlCalculationManual
For i = 1 To xxx
.....
..... 
Application.Calculation = xlCalculationAutomatic

End Sub


ovviamente tutte le colonne del foglio calcolo montecarlo saranno statiche, altrimenti excel si pianterebbe

(comunque mi sfugge il senso del tuo lavoro. Tra l'altro a forza di copiare 200 colonne alla volta, lo spazio si esaurisce....ma non avendo compreso non so che dire)

saluti
[Modificato da dodo47 24/06/2017 12:54]
Domenico
Win 10 - Excel 2016
Post: 33
Registrato il: 15/01/2017
Città: MILANO
Età: 44
Utente Junior
excel 2016
OFFLINE
24/06/2017 13:02

Il fatto di copiare, nel foglio Calcolo Montecarlo, 201 volte la colonna D del foglio Montecarlo serve per avere 201 scenari casuali, a partire da un determinato rendimento ed una determinata volatilità. Tali dati servono poi per calcolare le probabilità di perdita anno per anno, come si vede dal grafico presente nel foglio 'Montecarlo'

Se esiste un metodo migliore o alternativo, mi farebbe piacere sapere come impostarlo.
Post: 1.421
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
24/06/2017 13:15

No, per i motivi che ti ho esposto relativi al CHANGE e CALCULATE.

A meno che tu non richiami la macro alla fine delle macro sui pulsanti "CALCOLA" che stanno nel folgio FRONTIERA, ma non avendo presente il tutto non so se va bene

Quindi prima di creare i 201 scenari dovrai eliminare quelli precedentemente calcolati....o non ho capito nulla?





[Modificato da dodo47 24/06/2017 13:20]
Domenico
Win 10 - Excel 2016
Post: 34
Registrato il: 15/01/2017
Città: MILANO
Età: 44
Utente Junior
excel 2016
OFFLINE
24/06/2017 14:18

si, giusto. Ogni volta che variano le celle B2 e B3, dovrei cacellare a mano i valori delle celle B10-B532 del foglio 'Calcolo Montecarlo' e cliccare sul pulsante calcola per impostarne di nuovi.

Nel caso esiste un modo (ad esempio una macro) dal legare ad un pulsante per cancellare tali riquadri?

Posso chiederti un tuo giudizio sul lavoro, nel senso ti sembra il tutto confuso o poco utile? o male impostato? mi aiuterebbe a migliorare
Post: 1.422
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
24/06/2017 14:44

Re:
napo1985, 24/06/2017 14.18:

si, giusto. Ogni volta che variano le celle B2 e B3, dovrei cacellare a mano i valori delle celle B10-B532 del foglio 'Calcolo Montecarlo' e cliccare sul pulsante calcola per impostarne di nuovi.



mi sono perso... ma non devi reinserire 201 colonne nel foglio calcolo al posto di quelle esistenti? Perché dici di cancellare solo la col. B di calcolo montecarlo?

Mi fai capire: premi un "calcola" qualsiasi e...? inserisco 1 colonna in calcolo mont.? cancello tutte le col. in calc. mont. e ne copio 201 ?...che altro??
[Modificato da dodo47 24/06/2017 14:48]
Domenico
Win 10 - Excel 2016
Post: 35
Registrato il: 15/01/2017
Città: MILANO
Età: 44
Utente Junior
excel 2016
OFFLINE
28/06/2017 12:49

grazie dei consigli (soprattutto del (a1-1) nel foglio Frontiera. Grandissimo!).

ti volevi chiedere: per evitare di copiare la colonna D quando ci nono #NUM! nelle celle da B2 a GT532 del foglio Calcolo Montecarlo, non ho capito bene come aggiustare la macro. Così va bene??

Sub NuovaSimulazione()

Sheets("MONTECARLO").Select
For i = 2 To 5
If IsError(Cells(i, 4)) Then Exit Sub
Next i
Application.Calculation = xlCalculationManual
For i = 1 To xxx
.....
.....
Application.Calculation = xlCalculationAutomatic

End Sub



Sub montecarlo()
'
' montecarlo Macro
'
' Scelta rapida da tastiera: Opzione+Cmd+s
'
For i = 1 To 20
Sheets("MONTECARLO").Select
Columns("D:D").Select
Selection.Copy
Sheets("CALCOLO MONTECARLO").Select
Columns("B:B").Select
Selection.Insert Shift:=xlToRight
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Sheets("MONTECARLO").Select
Columns("D:D").Select
Next
End Sub
Post: 1.437
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
28/06/2017 19:08

Ciao
farei un'unica macro ma modificata in questo modo:

(intanto metti in automatico il calcolo delle formule dalle opzioni excel).

prima inseriamo una colonna in B nel foglio CALCOLO MONTECARLO , poi analizziamo se il foglio MONTECARLO ha errori, nel caso ricalcoliamo finchè MONTECARLO non ha errori (#NUM!); dopodiché si copia la col. D nella colonna inserita etc etc.

E' il contrario di quanto fatto prima e c'è un motivo e cioè che si rischiava di copiare colonne con errori, in quanto se inserisci dopo il copia una colonna, il foglio verrebbe ricalcolato per effetto dei CASUALI e potrebbe generare l'errore (spero sia chiaro).

Fai un test inserendo 4/5 colonne (For i = 1 To 4 o 5) per vedere che succede.

Tutto ciò premesso ti ricordo come più volte detto che a furia di inserire colonne....

saluti

Sub NuovaSimulazione()
 Sheets("CALCOLO MONTECARLO").Select
 For i = 1 To 20
    Application.Calculation = xlCalculationManual
    Columns("B:B").Select
    Selection.Insert Shift:=xlToRight
    While IsError(Sheets("MONTECARLO").Cells(2, 4))
        Calculate
    Wend
    Sheets("MONTECARLO").Range("D:D").Copy
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
    Calculate
    Range("C:C").Copy
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
 Next i
 Application.Calculation = xlCalculationAutomatic
 End Sub



[Modificato da dodo47 28/06/2017 19:17]
Domenico
Win 10 - Excel 2016
Post: 36
Registrato il: 15/01/2017
Città: MILANO
Età: 44
Utente Junior
excel 2016
OFFLINE
29/06/2017 17:12

perdonami ma non capisco bene cosa sbaglio.

Devo fare copia/incolla della colonna d1-d532 del foglio MONTECARLO nella colonna b del folgio CALCOLO MONTECARLO. Poi incollo la macro che mi hai scritto nel VBA al posto di quella che avevo impostato io.

Corretto?
Post: 1.438
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
29/06/2017 18:09

Quanto detto è la descrizione di cosa fa la maCro.
Tu la devi solo eseguire.
Domenico
Win 10 - Excel 2016
Post: 37
Registrato il: 15/01/2017
Città: MILANO
Età: 44
Utente Junior
excel 2016
OFFLINE
01/07/2017 16:21

ciao,
ho ridotto le dimensioni del file per renderlo più leggero, come da te consigliato. A questo punto devo soltanto inserire manualmente i valori nelle celle B2-B3 e clicco sul pulsante 'calcola'.

Il pulasante 'calcola' è collegato alla matrice che, gentilmente, mi hai fornito.

Posso chiederti, in ultimo, che matrice devo inserire per far si che, cliccando sul pulsante 'calcola', in automatico la colonna D del foglio 'MONTECARLO' viene copiata nel folgio 'CALCOLO MONTECARLO' nelle colonne da B a GT (201 colonne in tutto). Vorrei inoltre che i due grafici presenti nel foglio 'GRAFICI' si aggiornino automaticamente.

Grazieeeee


Post: 1.444
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
01/07/2017 16:37

cioè vuoi cancellare le col B > GT in calcolo e reinserirle ogni volta che premi calcola ?

[Modificato da dodo47 01/07/2017 16:43]
Domenico
Win 10 - Excel 2016
Post: 38
Registrato il: 15/01/2017
Città: MILANO
Età: 44
Utente Junior
excel 2016
OFFLINE
01/07/2017 17:28

si, esatto.

Vorrei cliccare calcola e in automatico compaiono 201 nuove colonne nel foglio 'CALCOLA MONTECARLO'.


Attualmente, se clicco su calcola si aggiungono soltanto 20 colonne. Io avrei bisogno che con un solo clic si creassero 201 colonne (da B a GT); ogni volta che clicco su 'Calcola' si dovrebbero creare 201 colonne che sostituiscono le precedenti.
Post: 1.445
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
01/07/2017 18:15

Sostituisci con questa macro...

Saluti



Sub NuovaSimulazione()
 mTime = Time()
 Sheets("CALCOLO MONTECARLO").Select
 Application.Calculation = xlCalculationManual
 Range("B:GT").ClearContents
 Application.ScreenUpdating = False
 c = 2
 For i = 1 To 201
    Columns(c).Select
    While IsError(Sheets("MONTECARLO").Cells(2, 4))
        Calculate
    Wend
    Sheets("MONTECARLO").Range("D:D").Copy
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
    Calculate
    Application.CutCopyMode = False
    Application.Calculation = xlCalculationManual
    c = c + 1
 Next i
 Application.Calculation = xlCalculationAutomatic
 Cells(1, 2) = Time() - mTime
 Application.Goto Range("A1"), True
 Application.ScreenUpdating = True
 End Sub

Domenico
Win 10 - Excel 2016
Post: 39
Registrato il: 15/01/2017
Città: MILANO
Età: 44
Utente Junior
excel 2016
OFFLINE
01/07/2017 22:06

Fuzionaaaaaaaaaaaaaaaa!

sei un genio!

Grazeieeeeeeeee.... che spettacolo!
Post: 40
Registrato il: 15/01/2017
Città: MILANO
Età: 44
Utente Junior
excel 2016
OFFLINE
03/07/2017 22:26

Ciao,
vorrei fare un'altra piccola cosina per rendere dinamico il file.

Nel foglio 'GRAFICO' vorrei sostituire il numero 105 presente nella forumula

=CONTA.SE('CALCOLO MONTECARLO'!$B62:$GT62;">105")

con il numero presente nella cella A49 dello stesso foglio.

(il valore della cella A49 dipende dal dato che inserisco manualmente nel folgio 'MONTECARLO', nella cella B2).

Tale modifica deve poi riguardare anche la cella B12 del foglio 'GRAFICO', nella cui forula ...>110 deve essere sostituito con la cella A50 e via di seguito


Come potrei fare?
grazieeeeee
Post: 1.450
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
04/07/2017 10:06

...;">" & TuaCella


Domenico
Win 10 - Excel 2016
Post: 41
Registrato il: 15/01/2017
Città: MILANO
Età: 44
Utente Junior
excel 2016
OFFLINE
04/07/2017 13:40

Non ho capito. Perdonami. Se inserisci nella formula la cella, la formula non funziona,,,,,
Post: 42
Registrato il: 15/01/2017
Città: MILANO
Età: 44
Utente Junior
excel 2016
OFFLINE
04/07/2017 16:59

Risolto, scusa, perfetto come sempre.
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 05:54. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com