Condividi:        

Raccogliere stringhe in unica 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

Raccogliere stringhe in unica colonna

Postdi ikwae » 07/05/21 13:29

Ciao a tutti… vorrei velocizzare una mia macro “casareccia” funziona al 100%
ma tende verso la “lumaca” all’aumentare delle righe.

Quindi, se possibile, chiedo aiuto a tutto il Forum per velocizzare la macro che dovrebbe seguire i seguenti passi:
1) Sul foglio ”Tabella1” spazzolare tutte le colonne(solitamente 630 e non ci sono colonne vuote).
2) Trovare(in colonna) la prima cella vuota e, trovata le cella, deve copiare tutte le celle sottostanti.
3) Le celle copiate vengono accodare partendo da B2 sul foglio “Vincite”.

In allegato due fogli uno con nome “Tabella1” dove ci sono i dati da copiare e l’altro di nome “Vincite”
ad indicare cosa si vuole ottenere … la macro, quando ha finito, dovrebbe accodare 5.606 righe in colonna B.
Ringraziando anticipatamente tutti coloro che mi possono aiutare 73 ikwae.
http://www.filedropper.com/3raccoltavinciterete
Excel 2007
Avatar utente
ikwae
Utente Senior
 
Post: 309
Iscritto il: 27/12/17 23:14

Sponsor
 

Re: Raccogliere stringhe in unica colonna

Postdi Anthony47 » 07/05/21 19:22

Non ho termini di paragone, ma presumo che questa macro sara' abbastanza veloce per le tue esigenze:
Codice: Seleziona tutto
 Sub GhiotteVincite()
Dim GVArr, tSh As Worksheet, gvSh As Worksheet
Dim LastR As Long, I As Long, cAdr As String, cDest As String
Set tSh = Sheets("Tabella1")        '<<<
Set gvSh = Sheets("Vincite")        '<<<
cDest = "D"                         '<<< La colonna dei risultati
'
tSh.Select
gvSh.Cells(1, cDest).Resize(Rows.Count, 1).ClearContents    '<---AZZERA colonna risultati
For I = 1 To Cells(1, Columns.Count).End(xlToLeft).Column
    LastR = Cells(Rows.Count, I).End(xlUp).Row
    cAdr = Cells(1, I).Resize(5000, 1).Address
    vuota = Evaluate("MIN(IF(" & cAdr & "="""",ROW(" & cAdr & "),""""))")
    If vuota < LastR Then
        GVArr = Range(Cells(vuota + 1, I), Cells(LastR, I)).Value
        gvSh.Cells(Rows.Count, cDest).End(xlUp).Offset(1, 0).Resize(UBound(GVArr), 1).Value = GVArr
    End If
Next I
MsgBox ("Completato")
End Sub


Devi compilare le istruzioni marcate <<<, in particolare cDest (ho usato D per confrontare i risultati con la tua colonna).
La colonna dei risultati ora viene AZZERATA a inizio macro; se si preferisce "accodare" i nuovi risultati a quanto gia' presente in colonna allora bisogna eliminare l'istruzione marcata <---
Attenzione: ho immaginato che in ogni colonna non ci siano piu' di 5000 righe.

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

Re: Raccogliere stringhe in unica colonna

Postdi ikwae » 07/05/21 21:13

Gentilissimo Anthony sempre gentile a rispondermi… :D e non aggiungo altro …. tuttavia per un naturale è dovuto riscontro
posso dire che la macro è istantanea e precisa. I conteggi sono giusti. Aggiungo che è istantanea scrivendo 5.606 righe.
Ho preso una tabella del 2020 è ha scritto 32.695 righe con ‘naticchia di tempo più ossia, tradotto in italiano, 20/30’’ (centesimi di secondo).
La mia macro “casareccia” con poche estrazioni è nell’ordine di qualche secondo ma perde, ad ogni estrazione, 3/5’(secondi)
e, superata la 100à estrazione, arriva scarsa al minuto e a fine estrazioni ossia con 157 estrazioni arriva anche a uno e mezzo due minuti…
Ringraziandoti mille e mille volte per la tua disponibilità e velocità di aver risolto in un lampo l’aiuto. Cordialmente ikwae
Excel 2007
Avatar utente
ikwae
Utente Senior
 
Post: 309
Iscritto il: 27/12/17 23:14


Torna a Applicazioni Office Windows


Topic correlati a "Raccogliere stringhe in unica colonna":


Chi c’è in linea

Visitano il forum: Gianca532011 e 14 ospiti