Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Velocizzare macro per copia incolla

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

Velocizzare macro per copia incolla

Postdi ikwae » 28/02/23 20:33

Ciao a tutti … ho due macro molto semplici nella struttura e, se possibile, chiedo aiuto a tutto il Forum per velocizzarle.
La 1à di nome macroA
Codice: Seleziona tutto
Sub macroA()
Range("R2:AA" & Range("P14").Value + 1).Copy _
 Destination:=Sheets("Strisce").Range("B" & Rows.Count).End(xlUp).Offset(1, 0)
End Sub

Lavora all’interno di un’altra macro che cicla tutti i fogli e per ogni foglio ciclato interviene la macroA che
copia sempre lo stesso range R2:AA(end) e lo accoda in colonna B del foglio “Strisce”. Quindi molto semplice (spero) Il foglio “Strisce” si riempie fino alla riga 830 mila e rotti(arriveranno 13/14 strisce da 980 mila e rotti righe).
Per adesso stiamo sulle 830 mila righe.
Da questo punto interviene la 2à, macroB, per smistare i dati, dal foglio “Strisce” al foglio “Tutto”.
Questa macro casareccia percorre la colonna I del foglio “Strisce” da i2 fino in fondo per cercare il valore 2,3,4,5 e 6.
Io non sono capace a scrivere del codice che intercetta il valore letto nella cella per accodarlo nella giusta colonna del foglio “Tutto”.
Quindi ho realizzato cinque cicli For per intercettare i cinque valori e accodarli nella giusta colonna del foglio “Tutto”.
--Il ciclo For a --percorre tutta la colonna I cerca il valore 6 e, trovato, copia un rettangolo di 2 righe 10 celle sopra e 10 celle sotto e le accoda sul foglio “Tutto”
in colonna AZ partire dalla cella AZ2
--Il ciclo For b –come sopra cerca il valore 5 accodandolo sul foglio “Tutto” in colonna AN a partire dalla cella AN2
--Il ciclo For c –come sopra cerca il valore 4 accodandolo sul foglio “Tutto” in colonna AB a partire dalla cella AB2
--Il ciclo For d –come sopra cerca il valore 3 accodandolo sul foglio “Tutto” in colonna P a partire dalla cella P2
--Il ciclo For e –come sopra cerca il valore 2 accodandolo sul foglio “Tutto” in colonna D a partire dalla cella D2

Trovati tutti i valori, la macroB, cancella tutti i dati sul foglio “Strisce” e salva il file.
Io ho già una macro “diretta” che dai fogli va a accodare sul foglio “Tutto” ma non la uso perché il foglio “Strisce” è necessario, per ulteriori ricerche.
Anche se i dati vengono cancellati, con la macroB, è solo una copia l’originale è nel gruppo elaborazione Dati.
Nota_1 il tempo trascorso è solo per il collaudo della macro e, finito il collaudo, si cancellano le righe. Di conseguenza si può omettere nella macro di aiuto.
Nota_2 anche disattivare e poi attivare le applicazioni si può omettere nella macro di aiuto.
Le macro A e B funzionano molto bene ma sono lente per la raccolta dati dai fogli fino al traguardo sul foglio “Tutto” trascorrono poco meno di 30 minuti.
In allegato un file con 3 fogli:
1°) Pippo… è uno dei 2123 fogli che devo compilare in questo caso è il 300.mo dove sulla parte dx c’è il range R2:AA(end) che è la parte in esame da copiare.
Con il foglio “Pippo” attivato e si manda in esecuzione la macroA si nota che sul foglio “Strisce”, sotto la linea spessa, viene accodato il range R2:AA(end).

2°) Strisce… che contiene i dati da accodare nelle colonne assegnate sul foglio “Tutto” ATTENZIONE CHE A FINE MACRO I DATI VENGONO CANCELLATI!!!
L’ho manomesso aggiungendo tre volte il valore 6 e quattro volte il valore 5 solo per collaudo macro e la posizione nelle colonne dei valori 6 e 5.

3°) Tutto … il risultato sperato nel più breve tempo possibile. Si realizza mandando in esecuzione la macroB dopo aver cancellato i dati dal foglio.

Infine ho già un’altra macro, copia e accoda, macroC già operativa e funzionante da velocizzare ma la accoderò su questo stesso post quando avrò finito
di trovare le parole giuste per descriverla, anche se è semplice nella struttura, è incasinata nella spiegazione. Così sul post rimarranno tre macro di copia e accoda.
Ringraziando anticipatamente tutti coloro che mi possono aiutare 73 ikwae
https://we.tl/t-RfPgsttjxl
Ho scaricato il file e il link funziona bene.

Codice: Seleziona tutto
Sub macroB()
Dim t As Date
t = Now
'DISATTIVO LE APPLICACAZIONI PER VELOCIZZARE
Dim xlCal As XlCalculation
With Application
    .ScreenUpdating = False
    .EnableEvents = False
    xlCal = .Calculation
    .Calculation = xlCalculationManual
End With
Sheets("Strisce").Select     
           Dim a As Range
      For Each a In Range("I2", Range("I" & Rows.Count).End(xlUp))
            If a.Value = "6" Then
               a.Select
'COPIA PRONOSTICO, VALORE, DATA E CONCORSO
       Range(ActiveCell.Offset(0, -7), ActiveCell.Offset(-1, 2)).Copy _
       Destination:=Sheets("Tutto").Range("AZ" & Rows.Count).End(xlUp).Offset(1, 0)
                                          'AZ2-6 punti
     End If
          Next a
     '*************
            Dim b As Range
      For Each b In Range("I2", Range("I" & Rows.Count).End(xlUp))
            If b.Value = "5" Then
               b.Select
'COPIA PRONOSTICO,VALORE,DATA E CONCORSO
       Range(ActiveCell.Offset(0, -7), ActiveCell.Offset(-1, 2)).Copy _
      Destination:=Sheets("Tutto").Range("AN" & Rows.Count).End(xlUp).Offset(1, 0)
                                         'AN2-5 punti
     End If
          Next b
     '*************
           Dim c As Range
      For Each c In Range("I2", Range("I" & Rows.Count).End(xlUp))
            If c.Value = "4" Then
               c.Select
'COPIA PRONOSTICO,VALORE,DATA E CONCORSO
       Range(ActiveCell.Offset(0, -7), ActiveCell.Offset(-1, 2)).Copy _
       Destination:=Sheets("Tutto").Range("AB" & Rows.Count).End(xlUp).Offset(1, 0)
                                          'AB2-4 punti
     End If
          Next c
     '*************
           Dim d As Range
      For Each d In Range("I2", Range("I" & Rows.Count).End(xlUp))
            If d.Value = "3" Then
               d.Select
'COPIA PRONOSTICO,VALORE,DATA E CONCORSO
       Range(ActiveCell.Offset(0, -7), ActiveCell.Offset(-1, 2)).Copy _
       Destination:=Sheets("Tutto").Range("P" & Rows.Count).End(xlUp).Offset(1, 0)
                                          'P2-3 punti
     End If
          Next d
     '*************
           Dim e As Range
      For Each e In Range("I2", Range("I" & Rows.Count).End(xlUp))
            If e.Value = "2" Then
               e.Select
'COPIA PRONOSTICO,VALORE,DATA E CONCORSO
       Range(ActiveCell.Offset(0, -7), ActiveCell.Offset(-1, 2)).Copy _
      Destination:=Sheets("Tutto").Range("D" & Rows.Count).End(xlUp).Offset(1, 0)
                                         'D2-2 punti
     End If
          Next e
'RIATTIVO LE APPLICATIONI
 With Application
    .Calculation = xlCal
    .EnableEvents = True
    .ScreenUpdating = True
End With
'CANCELLARE TUTTI I DATI DEL FOGLIO E SALVARE
  Sheets("Strisce").Select
    Cells.Select
    Selection.Delete Shift:=xlUp
    Range("A1").Select
    ActiveWorkbook.Save
'TEMPO TRASCOSO(solo per collaudo macro)
  MsgBox Format(Now - t, "HH:MM:SS"), vbInformation, "codice eseguito in........."
  Range("A1").Select
End Sub
Excel 2007
Avatar utente
ikwae
Utente Senior
 
Post: 294
Iscritto il: 27/12/17 23:14

Sponsor
 

Re: Velocizzare macro per copia incolla

Postdi Anthony47 » 28/02/23 23:46

Mah, secondo me e' la MacroB che rallenta...
Simulando la ripetizione della MacroA su 100 fogli della dimensione di Pippo ci sono voluti 6 secondi su un pc non velocissimo (compleso 100 selezione di fogli); su 2000 fogli potrebbero essere 2-3 minuti

La MacroB invece, col suo ripetitivo accesso ai dati di Strisce e la sua copia a blocchi di 2 righe e' invece forzosamente lenta
Quest'altra versione fa una copia in una matrice di tutti i dati, poi esegue le scansioni su questa matrice e compila una matrice di uscita che viene incollata in blocco su Tutto, contenendo i tempi a 10-20 secondi in tutto:
Codice: Seleziona tutto
Sub ToTutto()
Dim WArr, oarr(), oInd As Long
Dim I As Long, J As Long, K As Long, L As Long
'
myTim = Timer
Sheets("Tutto").Range("C2:BJ1000000").ClearContents
WArr = Range(Sheets("Strisce").Range("B2"), Sheets("Strisce").Cells(Rows.Count, "K").End(xlUp)).Value
For I = 2 To 6
    ReDim oarr(1 To UBound(WArr), 1 To 10)
    oInd = 0
    For J = 1 To UBound(WArr)
        If WArr(J, 8) = I Then
            For L = -1 To 0
                oInd = oInd + 1
                For K = 1 To 10
                    oarr(oInd, K) = WArr(L + J, K)
                Next K
            Next L
        End If
    Next J
    Sheets("Tutto").Range("D2").Offset(0, (I - 2) * 12).Resize(oInd, 10) = oarr
Next I
MsgBox ("Completato; sec: " & Format(Timer - myTim, "0.0"))
Sheets("Strisce").Select
Cells.Select
Selection.Delete Shift:=xlUp
Range("A1").Select
'' ActiveWorkbook.Save          'RIPRISTINARE la riga dopo i test
End Sub

Vedi se i conti tornano anche a te
Avatar utente
Anthony47
Moderatore
 
Post: 18740
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Velocizzare macro per copia incolla

Postdi ikwae » 01/03/23 10:19

Gentilissimo Anthony sempre molto gentile a rispondermi.
:D e non aggiungo altro la tua macro in una manciata di secondi ha trasferito i dati al giusto posto sul foglio “Tutto”
Se possibile, volevo chiederti, come fare sulla macroA copiare solo i valori ho provato in tanti modi ma da sempre errore
.
Codice: Seleziona tutto
Copy _
 Destination:=Sheets("Strisce").Range("B" & Rows.Count).End(xlUp).Offset(1, 0)??

Questo è il risultato del registratore di macro ho provato a fine riga di aggiungere
qualche o più argomenti ma da sempre errore.
Codice: Seleziona tutto
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False 

Mille grazie per la velocissima macro cordialmente ikwae
Excel 2007
Avatar utente
ikwae
Utente Senior
 
Post: 294
Iscritto il: 27/12/17 23:14

Re: Velocizzare macro per copia incolla

Postdi Anthony47 » 01/03/23 12:25

volevo chiederti, come fare sulla macroA copiare solo i valori ho provato in tanti modi ma da sempre errore

Il modo piu' efficiente secondo me e' copiare tutto in una matrice e poi incollare la matrice sul foglio di destinazione; tipo:
Codice: Seleziona tutto
Sub MacroA2()
Dim WArr, LastR As Long
'
myTim = Timer
With Sheets("pippo")
    LastR = .Cells(Rows.Count, "R").End(xlUp).Row
    WArr = .Range("R2:AA" & LastR).Value
End With
Sheets("Strisce").Range("B" & Rows.Count).End(xlUp).Offset(1, 0).Resize(LastR, 10).Value = WArr
Debug.Print Timer - myTim
End Sub

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 18740
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Velocizzare macro per copia incolla

Postdi ikwae » 01/03/23 14:21

Questa tua ultima macro è per me una Manna dal Cielo!!!! È da anni che la cerco.
io mi riferivo a qualche cosa di più semplice. Sul foglio Pippo nella cella P12 c’è la formula =P3 e con una
macro identica alla macroA copio e accodo da altra parte. Ma riporta la formula e compare il fastidioso errore.
Quindi sono andato nei miei trucchi e alla voce copia/destinazione ho trovato migliaia diversi tipi di
destinazione ma nessuno con solo i valori di destinazione. L’unica voce trovata è stata questa
Codice: Seleziona tutto
di Anthony47 » 30/07/11 23:48
Codice: Seleziona tutto
Range("DX26:EC26").Copy
Sheets("Ambi").Range("B25").PasteSpecial etc etc

non conoscendo il contesto e neanche se si riferisse ai solo valori ho cercato di aggiungere qualche cosa
al posto di “” etc etc”” sperando di risolvere. Ma qualunque cosa aggiungo, per avere solo i valori, da errore.
Poi ho risolto diversamente ma se riuscivo a farlo con la macro dedicata (tipo macroA) alla copia e accoda
avrei risparmiato le fasi della soluzione alternativa.
Grazie davvero per la tua ultima macro è utilissima la sostituirò a tutte le mie macro casarecce che sono lente.
Cordialmente ikwae
Excel 2007
Avatar utente
ikwae
Utente Senior
 
Post: 294
Iscritto il: 27/12/17 23:14

Re: Velocizzare macro per copia incolla

Postdi ikwae » 08/03/23 09:29

Ciao a tutti … come già detto nel post precedenti ho un’altra macro da velocizzare.
La macro in esame si chiama macroC che legge la colonna H per trovare i punti da 2 al 6 e, trovati, copia due intervalli accodandoli in colonna R partendo da R2.
Prosegue contando le righe appena accodate e, il risultato, lo scrive in P14 dalla quale prende come riferimento inferiore, per scrivere il numero delle estrazioni campionate In colonna AA, fin dove serve.

Penso che non ci sia molto da dire sulla macro ma per non far perdere tempo a chi mi aiuta è meglio scrivere qualche cosa di utile specialmente per il 1° intervallo.
Quando la macro scorre la colonna H trova uno dei valori (dal 2 al 6) lo seleziona
quindi siamo sulla cella attiva e da qui si deve trovare il modo di selezionare il 1° intervallo.

Ci sono diversi modi per selezionarlo io ho preferito come di seguito:
1a) dalla cella selezionata si memorizza il numero dell’intestazione di riga(nr)
2b) il numero memorizzato(nr) si inserisce all’interno dell’offset di colonna in
negativo (-nr,…) aggiungendo le celle da selezionare.

Quindi in qualsiasi riga di pronostico, in colonna H si ferma, con questa indicazione siamo
certi che seleziona univocamente il 1° intervallo.
Il 2° intervallo è semplice da selezionare usando, dalla cella attiva, l’offset.
Io non sono capace di fare solo un “viaggio” per accodare entrambi gli intervalli in R2 quindi ho dovuto fare due viaggi.
Se chi mi aiuta riesce a fare un solo “viaggio” è preferibile avere il 1° intervallo (striscia blu) per prima come da allegato.

In allegato un solo foglio “Pippo2” dove c’è tutto quello che serve alla macro.
Ho “manomesso” i punteggi aggiungendo due 6 e quattro 5 per collaudo macro.
Sulla parte destra del foglio il risultato finale.
Le parti in grigio, frutto di altre macro, non è da considerare come pure le scritte in rosso è solo per info.
Ringraziando anticipatamente tutti coloro che mi possono aiutare 73 ikwae

https://we.tl/t-Oe3d5MG1Qh
Codice: Seleziona tutto
Sub macroC_Rete()
Dim t As Date
Dim a
t = Now

For Each a In Range("H2", Range("H" & Rows.Count).End(xlUp))
        If a.Value = 6 Or _
           a.Value = 5 Or _
           a.Value = 4 Or _
           a.Value = 3 Or _
           a.Value = 2 Then
           a.Select
     
'MEMORIZZA IL Nr DELL'INTESTAZIONE DI RIGA
   nr = Cells(ActiveCell.Row, 1).Value

'COPIA IL 1° INTERVALLO(9 celle)... ACCODA IN COLONNA R INIZIA DA R2
   Range(ActiveCell.Offset(-nr, -7), ActiveCell.Offset(-nr, 1)).Copy _
   Range("R" & Rows.Count).End(xlUp).Offset(1, 0)

'COPIA IL 2° INTERVALLO(8 celle)... ACCODA IN COLONNA R INIZIA DA R2
   Range(a.Offset(0, 2), a.Offset(0, -7)).Copy _
   Range("R" & Rows.Count).End(xlUp).Offset(1, 0)

End If
Next a
 
'CONTA LE RIGHE IN R:R E SCIVE IN P14(indispensabile)
   Dim Urc
   Urc = Range("R" & Rows.Count).End(xlUp).Row
   Range("P14") = Application.WorksheetFunction.CountA(Range("R2:R" & Urc))

'COPIA LE CAMPIONATE DA Q2
   Range("AA2").Value = Range("Q2").Value

'E LE AutoFill FIN DOVE SERVE
   Range("AA2").AutoFill Destination:=Range("AA2:AA" & Range("P14").Value + 1), Type:=xlFillDefault

'MSGBOX DEL TEMPO IMPIEGATO
   MsgBox Format(Now - t, "HH:MM:SS"), vbInformation, "codice eseguito in........."
   
'PARCHEGGIO CURSORE
  Range("A1").Select '(nel giro fogli commentare)
End Sub
Excel 2007
Avatar utente
ikwae
Utente Senior
 
Post: 294
Iscritto il: 27/12/17 23:14

Re: Velocizzare macro per copia incolla

Postdi Anthony47 » 09/03/23 01:46

Ho modificato il codice del loop per lavorare con una copia dei dati in memoria e ridurre il numero di accessi ai dati sul foglio, lasciando invariata la seconda parte del tuo codice
Il nuovo codice:
Codice: Seleziona tutto
Sub macroC_Rete_XA()
Dim t As Single
Dim a
Dim WArr, oArr(), lFor, oInd As Long
'
t = Timer
'Valori da cercare:
lFor = Array(2, 3, 4, 5, 6)
'
'Copia dati in array:
WArr = Range(Range("A2"), Range("A2").End(xlDown)).Resize(, 9).Value
'oArr stesse dimensioni (max):
ReDim oArr(1 To UBound(WArr), 1 To UBound(WArr, 2))
'Loop in array:
For i = 1 To UBound(WArr)
    If Not IsError(Application.Match(WArr(i, 8), lFor, False)) Then
        oInd = oInd + 1
        For j = 1 To UBound(WArr, 2)
            oArr(oInd, j) = WArr(i - WArr(i, 1), j)     'copia riga 1
            oArr(oInd + 1, j) = WArr(i, j)              'copia riga 2
        Next j
        oInd = oInd + 1
    End If
Next i
'Accoda quanto trovato:
If oInd > 0 Then
    Range("R" & Rows.Count).End(xlUp).Offset(1, 0).Resize(oInd, UBound(WArr, 2)) = oArr
End If
'Altri aggiustamenti invariati:
'CONTA LE RIGHE IN R:R E SCIVE IN P14(indispensabile)
   Dim Urc
   Urc = Range("R" & Rows.Count).End(xlUp).Row
   Range("P14") = Application.WorksheetFunction.CountA(Range("R2:R" & Urc))

'COPIA LE CAMPIONATE DA Q2
   Range("AA2").Value = Range("Q2").Value

'E LE AutoFill FIN DOVE SERVE
   Range("AA2").AutoFill Destination:=Range("AA2:AA" & Range("P14").Value + 1), Type:=xlFillDefault

'MSGBOX DEL TEMPO IMPIEGATO
   MsgBox "Completato, " & Format(Timer - t, "0.0") & " secondi"
   
'PARCHEGGIO CURSORE
  Range("A1").Select '(nel giro fogli commentare)
End Sub

Non so se ci sono dei formati che così non vengono copiati

Prova...
Avatar utente
Anthony47
Moderatore
 
Post: 18740
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Velocizzare macro per copia incolla

Postdi ikwae » 09/03/23 11:18

Gentilissimo Anthony sempre molto gentile a rispondermi.
Ho fatto molte prove con due volte 100 fogli e in una manciata di secondi ha compilato
il lato dx del foglio. Ho confrontato il risultato della tua macro con i risultati della mia macro
e sembrano giusti anche se le matrici “mangiano” il colore blu ma questo è accettabile.
Ringraziandoti mille e mille volte per il tuo aiuto cordialmente ikwae
Excel 2007
Avatar utente
ikwae
Utente Senior
 
Post: 294
Iscritto il: 27/12/17 23:14

Re: Velocizzare macro per copia incolla

Postdi ikwae » 12/03/23 23:20

Gentilissimo Anthony mi dispiace molto di riaprire questo post. Anche se la macro lavora
benissimo, precisa e corretta nei calcoli e nei passaggi di copia e accoda, ma ho due grosse
anomalie la 1à sono riuscito a “risolvere” in qualche modo per evitare di disturbare ma la 2à
anomalia non riesco proprio a risolverla.

La macro in questione è la Sub ToTutto()in assenza dei punteggi 5 o 6 o entrambi la macro
si blocca evidenziando questo rigo
Codice: Seleziona tutto
Sheets("Tutto").Range("D2").Offset(0, (I - 2) * 12).Resize(oInd, 10) = oarr

dopo ore di prove e milioni di if con altri interventi di ogni ordine, tipo e grado (del mio livello)
ma tutto inutile. Ho “risolto”, inserendo in testa al blocco delle “Strisce”, 4 righe “fasulle” una
con un punteggio 5 e l’altra con un punteggio 6 quindi la macro non si blocca più e finisce il
ciclo tranquillamente di conseguenza evito di disturbare ma siamo tutti felici? Neanche un po'!

Finiti 2.130 fogli di dati e accumulando circa 20 milioni (anche di più) di righe li dispongo in
tanti blocchi sul foglio “Strisce”. Quindi mando in esecuzione la macro Sub ToTutto() e in
pochissimi istanti trasferisce tutti i dati, del primo blocco, sul foglio “Tutto” continuo eliminando
11 colonne(B:L) verso Sx e mando ancora in esecuzione la macro.

Molto pratico e veloce ma alla fine dei 14.mo blocco vado a controllare sul foglio “Tutto” e vedo
incolonnato solo il 14.mo blocco. Vado immediatamente a controllare questo rigo di codice
Codice: Seleziona tutto
'Sheets("Tutto").Range("C2:BJ1000000").ClearContents 

ma, purtroppo, l’avevo già commentato.
Ricapitolando la macro non accoda ma sostituisce anche se c’è il rigo di codice è commentato.

Sono certamente sicuro che è colpa mia che non l’ho previsto e, di conseguenza, non lo evidenziato.
Se riesci a modificare la macro per evitare che si blocchi e far in modo che i dati del foglio “Strisce”
si accodano sul foglio “Tutto” te ne sarei molto grato.

In allegato tre fogli:
1a) foglio “Strisce” con pochissimi dati soli 4 blocchi e, le righe “fasulle”, evidenziate in rosso.
I dati sono tutti uguali tranne la colonna K che individua sul foglio “Tutto” la posizione.
Se si eliminano le 4 righe in rosso tirandole su e si manda in esecuzione la macro si blocca.
La macro in questione è nel modulo.
2b) foglio “Tutto” vuoto per eventuale prove
3c) foglio “TuttoFine” che dovrebbe essere il risultato finale richiesto dei 4 blocchi del foglio “Strisce”.

Ringraziandoti ulteriormente per il lavoro aggiuntivo, naturalmente se hai tempo e voglia. Cordialmente ikwae

https://www.swisstransfer.com/d/57980e2 ... e74b54ce0f
note: ho scaricato il file e il link funziona.
Excel 2007
Avatar utente
ikwae
Utente Senior
 
Post: 294
Iscritto il: 27/12/17 23:14

Re: Velocizzare macro per copia incolla

Postdi Anthony47 » 14/03/23 01:33

Prova sostituendo la riga che andrebbe in errore con
Codice: Seleziona tutto
    If oInd > 0 Then
        Sheets("Tutto").Range("D2").Offset(0, (I - 2) * 12).Offset(10000, 0).End(xlUp).Offset(1, 0).Resize(oInd, 10) = oarr
    End If

(per ambedue i problemi)
Avatar utente
Anthony47
Moderatore
 
Post: 18740
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Velocizzare macro per copia incolla

Postdi ikwae » 14/03/23 10:07

Gentilissimo Anthony sembra che va tutto bene per entrambe le anomalie. Finiti 14 blocchi ne ho caricato ancora altri blocchi escludendo i 2 punti (da soli sono più di 3 milioni di righe) perché altrimenti prima o poi andrebbe in errore e, la macro, ha terminato il ciclo tranquillamente accodando velocemente i dati rimasti al loro giusto posto in colonna assegnata.
Quindi tutto bene e ringraziandoti ulteriormente per il lavoro aggiuntivo e la tua indiscussa Santa Pazienza. Cordialmente ikwae
Excel 2007
Avatar utente
ikwae
Utente Senior
 
Post: 294
Iscritto il: 27/12/17 23:14


Torna a Applicazioni Office Windows


Topic correlati a "Velocizzare macro per copia incolla":


Chi c’è in linea

Visitano il forum: Nessuno e 16 ospiti

cron