Se hai cartelle di Excel con dati strutturati in modo identico su ogni foglio di lavoro, potresti essere interessato a un modo per combinare più fogli di lavoro in un unico foglio di grandi dimensioni.
Il concetto è piuttosto semplice: è sufficiente copiare i dati dal secondo e dai successivi fogli di lavoro nella prima riga vuota del primo foglio di lavoro. Excel non include uno strumento che ti permetta di farlo automaticamente, ma questo esempio è un ottimo candidato per una macro. Ricorda, tuttavia, che la struttura di ogni foglio di lavoro che stai condensando dovrebbe essere identica.
La seguente macro scorre attraverso tutti i fogli di lavoro e combina i dati in un nuovo foglio di lavoro che aggiunge all’inizio della cartella di Excel.
Questo contenuto è riservato agli abbonati
Solo gli utenti con Abbonamento VBA Coder oppure Ultimate possono visionarlo.
Se sei già abbonato Accedi per sbloccare il contenuto!
In caso contrario abbonati qui! L'abbonamento è conveniente.
E puoi interromperlo in ogni momento e in completa autonomia.
(puoi renderti conto di quanti siano i contenuti riservati
raggiungendo questa pagina)
Al termine della macro, il primo foglio della cartella di lavoro, denominato Combinati, contiene tutti i dati degli altri fogli di lavoro. Gli altri fogli di lavoro rimangono invariati.
Verso il termine della macro, potresti aver notato la riga seguente:
Cells(Rows.Count, 1).End(xlUp)(2)
La sintassi completa di ciò che stiamo usando è
Cells(Rows.Count, 1).End(xlUp).Item(2)
Item(2) ci fornisce la cella appena sotto la cella data da
Cells(Rows.Count, 1).End(xlUp)
Cells(Rows.Count, 1).End(xlUp) è uguale a Cells(Rows.Count, 1).End(xlUp).Item(1).
Nel caso volessi combinare assieme solo alcuni dei fogli presenti nella cartella di Excel, l’approccio dovrebbe essere leggermente diverso.
In VBA puoi fare riferimento a un foglio di lavoro in base al suo numero di item, che è il suo numero di scheda, contando da sinistra.
La macro qua sopra aggiunge un nuovo foglio di lavoro alla scheda numero 1, quindi le tue prime 3 schede si sposteranno a destra di una posizione e avranno quindi i numeri di item 2, 3 e 4.
La sezione del Loop alternativa potrebbe quindi essere qualcosa di questo genere:
Questo contenuto è riservato agli abbonati
Solo gli utenti con Abbonamento VBA Coder oppure Ultimate possono visionarlo.
Se sei già abbonato Accedi per sbloccare il contenuto!
In caso contrario abbonati qui! L'abbonamento è conveniente.
E puoi interromperlo in ogni momento e in completa autonomia.
(puoi renderti conto di quanti siano i contenuti riservati
raggiungendo questa pagina)
Oppure potresti usare la proprietà .Index, aggiungendo semplicemente poche righe.
Al posto di:
For Each s In ActiveWorkbook.Sheets
'
'
'
'
'
Next
supponendo tu voglia combinare solo i fogli dalla 7^ scheda in poi, scriverai:
For Each s In ActiveWorkbook.Sheets
If s.Index > 6 Then
'
'
'
'
Else
End If
Next