| | Post: 36 | Registrato il: 09/09/2017
| Città: SASSARI | Età: 64 | Utente Junior | 2007 | | OFFLINE | |
|
21/08/2019 18:18 | |
Buonasera.
Volevo automatizzare gli aggiornamenti di una database di oltre 15.000 riche e 96 colonne.
Dopo aver importato i dati dal file di aggiornamento, mi occorre aggiornare le FORMULE delle prime 4 colonne.
Sono rimasto sorpeso dalla esasperante lentezza (ci metterebbe oltre un'ora) per eseguire questo codice:
Range("A2").Copy
For x = 3 to UltimaRiga (appositamente calcolata precedentemente)
Cells(x, 1).PasteSpecial xlPasteFormulas
Next x
La banale formula che deve ricopiare in Ax è:
=DATA.VALORE(Lx) - dove la data in Lx è espressa come data/ora (21/08/2019 18.05.
Se eseguo manualmente l'operazione da interfaccia utente (doppio clic su angolo basso a destra di A2) ci mette pochi secondi a ricopiare in basso la formula fino alla cella 15.000
Nella colonna B ho invece la formula semplice: In cella By =My
Qui il codice sottostante scorre agevolmente
Range("B2").Copy
For y = 3 to UltimaRiga (appositamente calcolata precedentemente)
Cells(y, 2).PasteSpecial xlPasteFormulas
Next y
Suggerimenti?
|
|
| | Post: 2.344 | Registrato il: 06/04/2013
| Utente Veteran | 2010 | | OFFLINE |
|
21/08/2019 18:43 | |
prova a mettere il calcolo manuale per poi ripristinarlo alla fine:
Application.Calculation = xlCalculationManual
For x = 3 to UltimaRiga (appositamente calcolata precedentemente)
Cells(x, 1).PasteSpecial xlPasteFormulas
Next x
Application.Calculation = xlCalculationAutomatic
saluti
Domenico
Win 10 - Excel 2016 |
| | Post: 36 | Registrato il: 09/09/2017
| Città: SASSARI | Età: 64 | Utente Junior | 2007 | | OFFLINE | |
|
21/08/2019 20:30 | |
Funziona.
Grazie mille |
| | Post: 34 | Registrato il: 13/08/2015
| Città: COMO | Età: 60 | Utente Junior | excel 2016 | | OFFLINE |
|
23/08/2019 23:26 | |
eltorpe, 21/08/2019 18.18:
... mi occorre aggiornare le FORMULE delle prime 4 colonne.
....
Suggerimenti?
Ciao, le formule mi pare di aver capito che sono in A2:D2, allora prova così:
Sub CopiaFormule()
Range("A2:D2").Copy
Range("A3:A15000").PasteSpecial Paste:=xlPasteFormulas
Application.CutCopyMode = False
End Sub
|
| | Post: 5.742 | Registrato il: 14/11/2004
| Utente Master | Office 2019 | | OFFLINE |
|
24/08/2019 07:12 | |
Lentezza esecuzione macro Ciao a tutti, per la verità io sono contrario alle formule sul foglio, proprio per il rallentamento che avviene quando il foglio è imbottito di formule.
tranne se non devo vedere immediatamente il risultato del cambiamento di una cella relativa a molti calcoli, ed anche li ho le mie perplessità.
Sono più propenso a inserire direttamente nella cella il calcolo fatto dal VBA.
anche perche a volte per avere un risultato con le formule si creano diverse colonne di appoggio aumentando a dismisura le formule presenti nel foglio.
Logico che lo dico da parte di chi usa il VBA, chi non lo usa deve necessariamente e forzatamente usare le formule.
Ciao By Sal
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui |
| | Post: 37 | Registrato il: 09/09/2017
| Città: SASSARI | Età: 64 | Utente Junior | 2007 | | OFFLINE | |
|
24/08/2019 09:21 | |
Buongiorno.
Ringrazio tutti per i suggerimenti.
Ho premesso che lavoro per automatizzare gli aggiornamenti.
Il foglio non è pieno di formule.
La banale =DATA.VALORE che esite da quando utilizzo "manualmente" il foglio, rallentava a dismisura in fase di formattazione della data.
Con application.calculatione = xlManual restituisce il numero intero che sta alla base della data e funziona fluidamente.
Pure io sto dalla parte del codice, ma molti non vedono affatto male l'utilizzo misto di formule e codice.
Saluti. |
| | Post: 5.744 | Registrato il: 14/11/2004
| Utente Master | Office 2019 | | OFFLINE |
|
26/08/2019 07:51 | |
Ciao ma anche io non sono contrario alle formule, anche se non so usarle molto bene.
Ma sono contrario al fatto che sapendo di usare 15000 righe io spalmo di formule a priori il foglio di 15000 righe mentre al momento ne uso solo 1000.
mentre con una macro quando aggiungo una riga nuova faccio inserire le formule che servono sia con copia incolla che farle scrivere dalla macro.
Ciao By Sal
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui |
|
|