Excel - Dividere una tabella in più file - VBA

Livello tecnico : Base

Riepilogo
Dividere una tabella situata su di un foglio in tanti nuovi file quanti sono i nominativi presenti in colonna A. Excel 2003/2007/2010/2013.
Dettagli

NOTA. Gli esempi ed il codice sono forniti *così come sono* e l’autore declina ogni responsabilità per un loro uso scorretto. Utilizzate gli esempi forniti o file di prova per i vostri test. La correzione delle eccezioni (errori) e il controllo del tipo di dati inserito è solo parziale. I file vogliono essere un semplice esempio che illustra come sia possibile automatizzare Excel e Word e sono forniti solo a scopo dimostrativo.

Situazione.

Nel Foglio1 abbiamo una tabella composta da alcune colonne e da un numero n di righe. Il numero delle colonne è ininfluente e così il numero delle righe, la cosa importante è che la tabella non abbia righe vuote (in questo caso NON sarebbe una tabella nel senso comune del termine).

Nella colonna A abbiamo una serie di nominativi ripetuti e in colonna B e C dati relativi a quei nominativi e in colonna D una semplice formula che ci serve per dimostrare come il tutto funzioni anche in presenza di formule.

Quello che vogliamo ottenere è creare tanti file quanti sono i nominativi univoci e portare i dati di ciascun nominativo su di un foglio sul nuovo file. File e nuovo foglio avranno come nome quello del nominativo relativo.

Figura 1: Struttura tabella in Foglio1

Figura 2: La semplice Formula presente in colonna D

Inoltre nei vari fogli che andiamo a creare, eliminiamo la colonna A, in quanto il nominativo è già indicato nella linguetta del foglio.

Qui potete scaricare l'esempio completo con il codice abbondantemente commentato:

La macro può essere lanciata con i tasti di scelta rapida CTRL+a.

NOTE.

1) Il codice va copia/incollato in un modulo standard e va modificato il nome del foglio con la tabella iniziale (nell'esempio Foglio1)

2) Se non averte mai utilizzato il vb di Excel, date un'occhiata aquesto articolo Wiki:

3) Il codice può essere lanciato più volte se, ad esempio, la tabella in Foglio1 viene aggiornata con nuovi nominativi o nuove immissioni dati per nominativi giàpresenti. Il codice sovrascrive eventuali fogli presenti con lo stesso nome.

4) I file verranno salvati nella stessa cartella dove si trova il file che contiene il codice. Se volete vengano salvati in altra cartella, modificare la parte in grassetto di questa riga di codice:

sPath = ThisWorkbook.Path & "\"

così:

sPath = "C:\NomeDellaDirectory\"

dove C:\NomeDellaDirectory va sostituito con il percorso e il nome della vostra directory.

5) Una parte del codice, questa:

ha la funzione di aggiungere una riga con la scritta Totale ed il totale in fondo ad ogni tabella dei nuovi fogli e va eliminata se non è necessario o modificata con i vostri riferimenti.

Figura 3: Come si presenta la tabella del foglio sul nuovo file

Articoli Wiki simili.

Commenti.

Sono graditi i tuoi commenti a questo articolo Wiki e, se lo ritieni interessante, per favore spunta la voce : E' stato utile all'inizio della pagina.

Grazie.

NOTA. Excel non dispone nativamente di procedure assolutamente sicure per impedire la visualizzazione e la modifica del codice vb e/o per la protezione dei fogli. E’ una cosa da tenere sempre presente quando si distribuiscono file con contenuti ritenuti delicati. Ricordate anche che è possibile lanciare il file di Excel senza che vengano eseguite le macro.


Risorse.


 Avvio Pulito di Windows
(courtesy of Microsoft MVP Franco Leuzzi)

Computer infettato da malware (courtesy of Microsoft MVP Vincenzo Di Russo)

 

Informazioni articolo forum


Ultimo aggiornamento dicembre 11, 2018 Visualizzazioni 5.388 Si applica a:

Buongiorno

prima di tutto grazie per il suo lavoro! mi risparmia più o meno un giorno di lavoro ogni mese!

Vorrei solo chiedere un aiuto (premetto che sono autodidatta) la mia tabella ha le prime tre righe di intestazione quindi i dati partono dalla cella A4 e non A2 come dall'esempio.

Come posso modificare il codice facendo in modo che le prime tre righe vengano copiate in tutti i fogli?

Grazie mille!!

Sto utilizzando questa macro veramente incredibile. 

Complimenti a chi l'ha creata dr Gamberini!

...ma sono convinto di non saperlo usare! Dico così perchè ho notato che nel file di origine se filtro qualsiasi colonna, lo "spacchettamento" viene svolto giustamente per i dati filtrati, se invece uso il codice su un'altro file, quando chiedo lo "scompattamento" del file, il codice non tiene conto del filtro applicato... e se lo uso due volte nel corso della stessa sessione, la macro riavvia excel.

Mannaggia. Ha dei consigli da darmi su dove guardare per farlo funzionare come lei lo ha creato?

Saluti distinti

PS

Utilizzo Office 365

Saluti

Buonasera Sign. Gamberini. E' proprio la macro che cercavo!!!

Ho un piccolo problema per il file che devo utilizzare.

Il mio file è composto da 6 colonne.

Di questo file dovrei creare tanti file Excel quanti sono i codici voce. Non deve essere cancellata la colonna A e il totale dovrebbe essere eseguito sulla colonna D (Trattenuta).

Non sono molto pratico di macro.

Volevo chiederle se potreste rilasciare una macro adeguata a questo foglio Excel.

Grazie e complimenti per l'utilità di questo post