Stellar Blade Un'esclusiva PS5 che sta facendo discutere per l'eccessiva bellezza della protagonista. Vieni a parlarne su Award & Oscar!

Excel Forum Per condividere esperienze su Microsoft Excel

Velocità elaborazione VBA

  • Messaggi
  • OFFLINE
    zio.Piero
    Post: 15
    Registrato il: 07/09/2019
    Età: 49
    Utente Junior
    2016
    00 17/09/2019 09:07
    Sto sviluppando un foglio basato su una macro VBA che esegue molti calcoli e di conseguenza impiega molto tempo per l'elaborazione.

    Cerco consigli su come migliorare le prestazioni, ad esempio:

    1) se utilizzare i cicli FOR... NEXT oppure WHILE... WEND;
    2) se elaborare un ciclo più volte per singole serie di dati oppure una volta soltanto per tutte le serie assieme (ad esempio: confrontare i valori della prima colonna con le restanti una alla volta oppure tutte insieme);
    3) se assegnare i risultati a delle variabili temporanee oppure scrivere direttamente i valori nelle celle;
    4) se utilizzare delle variabili mnemoniche lunghe (ad esempio "primociclo") oppure brevi (ad esempio "prici");
    5) se visualizzare i risultati dell'elaborazione in tempo reale o solo alla fine.

    Non so quanto ciascuna delle scelte possa incidere sulla velocità di elaborazione, mi piacerebbe trovare dei riferimenti per studiare e imparare.
    Qualcuno ha dei suggerimenti?
  • OFFLINE
    patel45
    Post: 4.177
    Registrato il: 13/03/2012
    Città: LIVORNO
    Età: 78
    Utente Master
    2010
    00 17/09/2019 10:42
    Re:
    1) credo sia indifferente
    2) devi provare
    3) usare le celle richiede più tempo
    4) credo sia indifferente
    5) meglio visualizzare i risultati alla fine.
    Generalmente per velocizzare occorre cercare di fare tutte le operazioni in memoria e non sul foglio, quindi usare array invece dei range

    ----------
    Win 10 - Excel 2010
    allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
  • OFFLINE
    zio.Piero
    Post: 15
    Registrato il: 07/09/2019
    Età: 49
    Utente Junior
    2016
    00 17/09/2019 12:27
    Re: Re:
    patel45, 17/09/2019 10.42:

    Generalmente per velocizzare occorre cercare di fare tutte le operazioni in memoria e non sul foglio, quindi usare array invece dei range


    Grazie mille per la tua consueta disponibilità, patel45!
    Sto effettuando dei piccoli test, ma credo che le condizioni al contorno siano molto influenti sui risultati, per cui vorrei chiedo suggerimento a tutti coloro che utilizzano il VBA da anni e sono esperti.

    Mi chiedo inoltre se c'è un qualche riferimento da consultare: un sito, una tabella comparativa, un manuale che affronti questa tematica particolare.
    [Modificato da zio.Piero 17/09/2019 12:27]
  • OFFLINE
    patel45
    Post: 4.178
    Registrato il: 13/03/2012
    Città: LIVORNO
    Età: 78
    Utente Master
    2010
    00 17/09/2019 19:04
    Re: Re: Re:
    zio.Piero, 17/09/2019 12.27:

    .....ma credo che le condizioni al contorno siano molto influenti sui risultati

    concordo, ma solo tu le conosci

    ----------
    Win 10 - Excel 2010
    allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
  • OFFLINE
    zio.Piero
    Post: 16
    Registrato il: 07/09/2019
    Età: 49
    Utente Junior
    2016
    00 17/09/2019 19:49
    Re: Re: Re: Re:
    patel45, 17/09/2019 19.04:

    concordo, ma solo tu le conosci


    Per condizioni al contorno intendevo: i programmi aperti, i processi in esecuzione, la memoria disponibile, etc.

    Ad ogni modo, ho trovato una pagina in inglese con molte informazioni utili ma non so se posso riportarne il link.