Quando si lavora con diverse origini dati, è spesso possibile avere difficoltà a compilare più cartelle di lavoro e fogli di lavoro prima di arrivare a un dato finale. Immagina una situazione in cui hai alcune centinaia di cartelle di lavoro da combinare prima ancora di poter iniziare la giornata.

Nessuno vuole trascorrere infinite ore lavorando su fonti diverse, aprendo ogni cartella di lavoro, copiando e incollando i dati da vari fogli, prima di creare finalmente una cartella di lavoro consolidata. E se una macro VBA potesse farlo per te?

Con questa guida puoi creare il tuo codice macro VBA Excel per consolidare più cartelle di lavoro, il tutto in pochi minuti (se i file di dati sono molti).

Prerequisiti per la creazione del proprio codice macro VBA

È necessaria una cartella di lavoro per ospitare il codice VBA, mentre il resto delle cartelle di lavoro dei dati di origine sono separate. Inoltre, crea una cartella di lavoro Consolidato per memorizzare i dati consolidati di tutte le cartelle di lavoro.

instagram viewer

Crea una cartella Consolidamento nella posizione preferita per archiviare tutte le cartelle di lavoro di origine. Quando la macro viene eseguita, passa da ogni cartella di lavoro archiviata in questa cartella, copia il contenuto da vari fogli e lo inserisce nella cartella di lavoro consolidata.

Creazione del proprio codice VBA Excel

Una volta eliminati i prerequisiti, è il momento di approfondire il codice e iniziare a modificare le basi per adattarlo alle tue esigenze.

Imparentato: Funzionalità avanzate di Microsoft Excel che devi conoscere

premi il Alt+F11 tasto su Excel per aprire l'editor di codice macro VBA. Incolla il codice scritto di seguito e salva il file come cartella di lavoro abilitata per Macro (.xlsm estensione).

Sottofile aperti()

'dichiara le variabili utilizzate all'interno del codice VBA

Dim MyFolder As String, MyFile As String, wbmain As Workbook, lastrow As Long

'disabilita queste funzioni per migliorare l'elaborazione del codice

Con Applicazione
.DisplayAlerts = Falso
.ScreenUpdating = Falso
Termina con

'cambia il percorso della cartella in cui verranno salvati i tuoi file

MyFolder = InputBox("Inserisci il percorso della cartella di consolidamento") & "\"

'definire il riferimento della cartella in una macro variabile

MyFile = Dir (MyFolder)

'apri un ciclo per scorrere ogni singola cartella di lavoro archiviata nella cartella

Fai mentre Len (MyFile) > 0

'attivare la cartella di lavoro Consolidamento

Windows ("Consolidamento"). Attiva

'calcola l'ultima riga popolata

Intervallo("a1048576").Seleziona
Selezione. Fine (xlSu).Seleziona
Cellula attiva. Offset (1, 0).Selezionare

'apri la prima cartella di lavoro all'interno della cartella Consolidamento

Cartelle di lavoro. Apri nome file:=MyFolder & MyFile

Windows (MyFile).Attiva

'scorri ogni foglio all'interno delle cartelle di lavoro per copiare i dati

Dim ws come foglio di lavoro
Per ogni ws in fogli

v. Attivare
v. Modalità filtro automatico = Falso

'ignora l'intestazione e copia i dati dalla riga 2
Se Celle (2, 1) = "" Allora vai a 1

Vai a 10

1: Avanti

10: Intervallo("a2:az20000").Copia

Windows ("Consolidamento"). Attiva

'incolla il contenuto copiato

Foglio attivo. Impasto

Windows (MyFile).Attiva

'chiudi la cartella di lavoro aperta una volta incollati i dati

Cartella di lavoro attiva. Vicino

'svuota la cache per memorizzare il valore della cartella di lavoro successiva

MioFile = Dir()

'apri il file successivo nella cartella

Ciclo continuo

'abilita le funzioni disabilitate per un uso futuro

Con Applicazione
.DisplayAlerts = Vero
.ScreenUpdating = Vero
Termina con

Fine Sub

Il codice VBA spiegato

La prima parte del codice è la definizione di una subroutine, che contiene tutto il codice VBA. Definire la subroutine con sub, seguito dal nome del codice. Il nome secondario può essere qualsiasi cosa; idealmente, dovresti mantenere un nome pertinente al codice che stai per scrivere.

Imparentato: Siti Web e blog per apprendere suggerimenti e trucchi su Excel

Excel VBA comprende le variabili create dall'utente e i relativi tipi di dati dichiarati con debole (dimensione).

Per migliorare la velocità di elaborazione del codice, puoi disattivare l'aggiornamento dello schermo ed eliminare tutti gli avvisi, poiché ciò rallenta l'esecuzione del codice.

All'utente verrà richiesto il percorso della cartella in cui sono archiviati i file di dati. Viene creato un ciclo per aprire ogni cartella di lavoro archiviata all'interno della cartella, copiare i dati da ogni foglio e aggiungerlo al file Consolidamento cartella di lavoro.

La cartella di lavoro Consolidamento viene attivata in modo che Excel VBA possa calcolare l'ultima riga popolata. Viene selezionata l'ultima cella all'interno del foglio di lavoro e l'ultima riga viene calcolata all'interno della cartella di lavoro utilizzando la funzione di offset. Ciò è molto utile quando la macro inizia ad aggiungere dati dai file di origine.

Quando il ciclo apre il primo file sorgente, i filtri vengono rimossi da ogni singolo foglio (se lo sono esistenti), e i dati che vanno da A2 a AZ20000 verranno copiati e incollati nel Consolidamento cartella di lavoro.

Il processo viene ripetuto finché tutti i fogli della cartella di lavoro non vengono aggiunti alla cartella di lavoro principale.

Imparentato: I migliori corsi online per padroneggiare Excel avanzato

Infine, il file di origine viene chiuso una volta incollati tutti i dati. La cartella di lavoro successiva viene aperta in modo che la macro VBA possa ripetere gli stessi passaggi per il set di file successivo.

Il ciclo è codificato per essere eseguito finché tutti i file non vengono aggiornati automaticamente nella cartella di lavoro principale.

Personalizzazioni basate sull'utente

A volte, non vuoi preoccuparti dei prompt integrati, soprattutto se sei l'utente finale. Se preferisci codificare il percorso della cartella Consolidation nel codice, puoi modificare questa parte del codice:

MyFolder = InputBox("Inserisci il percorso della cartella di consolidamento") & "\"

A:

MyFolder = "Percorso cartella" & "\"

Inoltre, puoi anche modificare i riferimenti alle colonne, poiché il passaggio non è incluso in questo codice. Sostituisci semplicemente il riferimento della colonna finale con l'ultimo valore della colonna popolata (AZ, in questo caso). È necessario ricordare che l'ultima riga popolata viene calcolata tramite il codice macro, quindi è necessario modificare solo il riferimento della colonna.

Per ottenere il massimo da questa macro, puoi utilizzarla solo per consolidare le cartelle di lavoro nello stesso formato. Se le strutture sono diverse, non puoi utilizzare questa macro VBA.

Consolidamento di più cartelle di lavoro utilizzando la macro VBA di Excel

La creazione e la modifica di un codice VBA di Excel è relativamente semplice, soprattutto se si comprendono alcune delle sfumature all'interno del codice. VBA esegue sistematicamente ogni riga di codice e la esegue riga per riga.

Se apporti modifiche al codice, devi assicurarti di non modificare l'ordine dei codici, poiché ciò interromperà l'esecuzione del codice.

5 fantastiche macro di Microsoft Excel per l'ordinamento dei dati

Rendi la gestione dei dati un gioco da ragazzi con queste macro di Excel.

Leggi Avanti

CondividereTweetE-mail
Argomenti correlati
  • Programmazione
  • Programmazione
  • Microsoft Excel
Circa l'autore
Gaurav Siyal (19 articoli pubblicati)

Gaurav Siyal ha due anni di esperienza di scrittura, scrivendo per una serie di società di marketing digitale e documenti sul ciclo di vita del software.

Altro da Gaurav Siyal

Iscriviti alla nostra Newsletter

Iscriviti alla nostra newsletter per suggerimenti tecnici, recensioni, ebook gratuiti e offerte esclusive!

Clicca qui per iscriverti