Condividi:        

macro excel per copiare dati e accodarli in una sola colonna

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

macro excel per copiare dati e accodarli in una sola colonna

Postdi turbonet » 22/03/23 13:29

salve,
cerco un aiuto per questa macro, che non riesco ha farla funzionare correttamente...
ovvero, devo copiare le celle che vanno dalla riga 11 alla riga 15, nelle colonne 96, 99, 102, 105, 108, 111, 114, 117, 120, 123, 126, e accodarli tutti nella colonna 129 dalla riga 11 in poi...

dove sto sbagliando? grazie...

Codice: Seleziona tutto
Dim X, Y, Rg
Rg = 11
For Y = 96 To 126
    For X = 11 To 15
        Cells(Rg, 129) = Cells(X, Y)
        Rg = Rg + 1
    Next X
Next Y
turbonet
Utente Junior
 
Post: 16
Iscritto il: 01/04/15 21:24

Sponsor
 

Re: macro excel per copiare dati e accodarli in una sola col

Postdi Marius44 » 22/03/23 16:07

Ciao
Credo che il primo ciclo deve fare un salto di 3, cioè For Y = 96 To 126 Step 3

Ciao,
Mario
Marius44
Utente Senior
 
Post: 655
Iscritto il: 07/09/15 22:00

Re: macro excel per copiare dati e accodarli in una sola col

Postdi turbonet » 24/03/23 11:09

salve, ringrazio Marius44 del suggerimento...
la macro adesso funziona correttamente, ma purtroppo ho notato una lentezza dell'esecuzione di circa 1,5 secondi...
invece con la macro che ho riscritto di seguito riportata, inpiega circa 0,3 secondi di esecuzione...
si accettano ulteriori miglioramenti per la velocità... grazie.

Dim D1 As Single
D1 = Timer

riga = 11
colonna = 96
celle = 10
For X = 1 To 10
Range(Cells(riga, 129), Cells(riga + celle, 129)).Value = Range(Cells(11, colonna), Cells(11 + celle, colonna)).Value
riga = riga + celle
colonna = colonna + 3
Next X
MsgBox "Tempo impiegato: " & Format(Timer - D1, "0.0")
turbonet
Utente Junior
 
Post: 16
Iscritto il: 01/04/15 21:24

Re: macro excel per copiare dati e accodarli in una sola col

Postdi Anthony47 » 24/03/23 15:17

La prima macro accodava in DY11 una alla volta le N celle delle M righe procedendo in orizzontale, quindi con N*M cicli; la seconda accoda in N cicli tutte le M celle della stessa colonna. Risultano quindi meno cicli, ma nei due casi la sequenza dei dati in DY11 è diversa (cosa che evidentemente non ti dà fastidio ma non era scontato).
Probabilmente si puo' migliorare ma, supponendo di risparmiare miracolosamente tutti gli 0.3 sec attuali, il tempo che impiegheresti a leggere la risposta, inserire una macro diversa nel tuo file e collaudarla equivale a tutto il tempo che risparmieresti nel prossimo anno di lavoro. Sommandoci il mio tempo direi che il tentativo non vale proprio la pena di essere fatto :D :D
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: macro excel per copiare dati e accodarli in una sola col

Postdi turbonet » 25/03/23 18:14

salve, ringrazio Anthony47 di avermi risposto...
avevo chiesto di velocizzare queste poche righe di codice, perchè fa parte di una macro di circa 300 righe per elaborare dei dati che il pc dovrà fare tutta la notte...
guadagnare 1 secondo per 3500 cicli che il pc dovrà fare nella sua elaborazione dei dati, ovviamente per completare prima...
comunque vi ringrazio, e alla prossima...
turbonet
Utente Junior
 
Post: 16
Iscritto il: 01/04/15 21:24

Re: macro excel per copiare dati e accodarli in una sola col

Postdi Anthony47 » 27/03/23 10:25

Se non si tratta di 0.3 secondi ma di 0.3 sec moltiplicato per xxxxxxx volte allora il gioco potrebbe valere la candela.
Ma per decidere che "investimento" fare e' necessario conoscere in dettaglio la struttura dei dati e l'elaborazione complessiva da fare

Ma innanzitutto vanno provati quegli acorgimenti standard di quando si modifica il contenuto di celle, ossia
In testa al codice
Codice: Seleziona tutto
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

E in coda
Codice: Seleziona tutto
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic

Infatti quel tuo codice nelle mie prove non richiede 0.3 sec, ma circa 0.02 sec; quindi e' possibile che nel tuo file ci siano macro di evento o comunque ricalcoli che rallentano le macro. E l'aggiunta di quelle istruzioni di preambolo /postambolo ha ulteriormente ridotto i tempi di esecuzione
Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "macro excel per copiare dati e accodarli in una sola colonna":


Chi c’è in linea

Visitano il forum: Nessuno e 52 ospiti