Gulp, spero che non ti sia arrabbiato! Come avevo scritto non ero a casa. Ero qui: (vedi foto).
Ad ogni modo, più che un listato io avevo fatto solo delle prove, scrivendo semplici istruzioni e integrandole con Excel. Probabilmente le ho cancellate. Dovrò cercarle e se proprio le vuoi vedere – sic- riscriverle. Qualcosa tipo:
For a = 51 To 200
For b = 5 To 50 Step 5
Cells(a, 6) = b
E cioè: partendo dalla riga 51 e finendo alla riga 200, scrivi nella cella (A,6) un valore che va da 5 a 50, con step di 5. A questo punto, con una istruzione tipo:
=media(indiretto(concatena("e"&rif.riga()-F51)):E51)
cercavo di calcolare la media ottenuta di volta in volta con i nuovi valori, scrivendo i risultati nelle celle adiacenti. A questo punto sceglievo per “domani” la media che aveva performato meglio oggi (o, meglio, negli ultimi X giorni).
Per evitare fraintendimenti ribadisco ancora una volta che condivido le perplessità espresse da F4F riguardo la media (esperimento già tentato). Mi interesserebbe arrivare ad una soluzione riguardo la costruzione di una finestra mobile per tentare altre strade.
Come avevo scritto in precedenza, la difficoltà maggiore stava nel tempo impiegato per il calcolo. Ho fatto una rapida ricerca su web e ho scoperto che posso risolvere scegliendo Calcolo Manuale da strumenti->opzioni.
Comunque sia, grazie ugualmente e buona giornata.
Ciao, Truppa, bentornato !
Ho visto che hai risolto impostando il ricalcolo manuale, comunque puo' essere utile capire il motivo del rallentamento che ottenevi, magari per evitarlo in altre occasioni...
Leggendo quelle famose 3 righe (hai visto che non era uno sforzo inutile ?
), probabilmente il problema era il seguente:
- quando usi una funzione Excel calcolata su un INSIEME di celle (come avviene per la funz. "MEDIA"), QUALSIASI variazione su anche UNA SOLA di quelle celle forza il ricalcolo automatico della funzione (in questo caso la media) sull'INTERO range di valori.
Questo vuol dire che se, per es., vuoi calcolare la media di 1000 valori da te calcolati, e metti in un ciclo la modifica delle 1000 celle, Excel calcola 1000 volte la media, proprio dopo ciascuna modifica di ciascuna cella !!!
Il fatto e' tu non vuoi calcolare 1000 volte la media, ma calcolarla SOLO ALLA FINE !
Ci sono varie soluzioni:
- forzare Excel al ricalcolo "a richiesta" anziche' automatico, come hai fatto tu in questo caso, anche se questo si applica all'intero foglio (e non sempre e' l'ideale);
- applicare quella soluzione SOLO su una porzione di codice, premettendo (al ciclo for) un'istruzione
Application.Calculation = xlCalculationManual, e alla fine (dopo il next) rimettendo tutto a posto con
Application.Calculation =xlCalculationAutomatic
- in caso di una funzione semplice come la media, calcolandola direttamente dal VBA e mettendo il risultato nella cella desiderata (anziche' usare la funzione MEDIA)
Spero possa esserti utile, CIAO !!!