Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Quando si lavora con più file in excel per velocizzare sono fondamentali alcune operazioni:
- Application.ScreenUpdating = False
- il ricalcolo va fatto manualmente
Application.Calculation = xlCalculationManual
ActiveSheet.Calculate quando serve
2bis) se il ricalcolo non serve di tutto il foglio ma solo di alcune celle, non va proprio fatto, soprattutto se il foglio contiene parecchi calcoli da fare, piuttosto quei calcoli vanno fatti all'interno di vba.
- Creare un tipo di dato congruo ai dati con cui lavori per il punto 4
- Non aprire mai più di quel che serve un foglio, se sono 50 fogli, devono essere aperti 50 volte e basta, se vi e' necessita di quei dati, vanno salvati in memoria mediante il tipo di dato congruo.
- Se stai aprendo più volte gli stessi file stai sbagliando, se stai tenendo aperto il file per rileggere più volte le stesse celle da esso, stai sbagliando. Seguendo il punto 4, non lasciare i file aperti se non servono, rallentano il processo. Salvare i dati necessari in memoria tramite il punto 3.
6 avanzato) Cache, se i dati letti non vengono modificati spesso, vanno messi in cache, si deve ripensare alle funzioni, la cache può essere generata anche da un singolo file che contiene tutti quelli che non vengono modificati.
Inoltre quell'application.wait va eliminato, in qualche modo, soprattutto se viene richiamato più di una volta. Di nuovo, non vedendo il codice non posso aiutarti.
Per quanto riguarda CUDA: VBA non usa CUDA, CUDA e' usato in C++, Excel e' scritto in C++ e utilizza l'accelerazione hardware per mostrare a video forme, disegni etc.
VBA usa la CPU.
La GPU non e' più veloce della CPU e non ha l'accesso diretto alla ram.
La GPU ha solo più core e più fare più cose contemporaneamente, ma VBA non supporta il multi-thread.
La GPU e' specifica più per lavori ripetitivi piuttosto che calcoli matematici complessi.
Ovvio se compri un i9 9900k con un ssd NVME M.2 velocizzerai l'esecuzione, ma non aspettarti di portarla a pochi secondi o di avere grandi miglioramenti, la spesa vale la resa? O e' meglio rivedere il codice?
Spero di esserti stato utile, un saluto.