Consolida/Unisci più fogli di lavoro in un foglio principale utilizzando VBA

Anonim

A volte vogliamo unire più fogli in un unico foglio in modo da poter analizzare facilmente i dati e trasformarli in informazioni utili. Questo articolo ti spiegherà come unire più fogli di lavoro in un unico foglio di lavoro utilizzando VBA.
Esempio:

Qui ho recuperato alcuni dati dal server che restituisce i dati in diversi fogli di lavoro. Ho aggiunto un altro foglio e l'ho chiamato "Master". Altri nomi di fogli non contano.
Ora esegui questa macro.

Sub Merge_Sheets() Dim startRow, startCol, lastRow, lastCol As Long Dim headers As Range 'Imposta foglio principale per consolidamento Set mtr = Worksheets("Master") Set wb = ThisWorkbook 'Get Headers Set headers = Application.InputBox("Select the Headers", Tipo:=8) 'Copia le intestazioni nelle intestazioni principali.Copia mtr.Range("A1") startRow = headers.Row + 1 startCol = headers.Column Debug.Print startRow, startCol 'percorre tutti i fogli per ogni ws In wb.Worksheets 'tranne il foglio principale dal ciclo If ws.Name "Master" Then ws.Activate lastRow = Cells(Rows.Count, startCol).End(xlUp).Row lastCol = Cells(startRow, Columns.Count). End(xlToLeft).Column 'ottene i dati da ciascun foglio di lavoro e li copia nel foglio principale Range(Cells(startRow, startCol), Cells(lastRow, lastCol)).Copy _ mtr.Range("A" & mtr.Cells(Rows .Count, 1).End(xlUp).Row + 1) End If Next ws Worksheets("Master").Attiva End Sub 

Come unire i fogli usando questa macro VBA?

  1. Inserisci un nuovo foglio e chiamalo "Master" nella cartella di lavoro. Rinominalo più tardi se vuoi.
  2. Inserisci un modulo nell'editor VBA e copia sopra il codice VBA.
  3. Esegui la macro.
  4. Ti verrà chiesto di selezionare i titoli. Seleziona l'intestazione e premi OK.

Ed è fatto. Tutti i fogli vengono uniti in master.

Come funziona?
Presumo che tu conosca le basi della creazione di oggetti e variabili in VBA. nella prima parte abbiamo creato l'oggetto e le variabili di cui avremo bisogno nelle nostre operazioni.

Bene, la maggior parte delle cose che ho spiegato usando i commenti nel codice vba. Diamo un'occhiata alla parte principale di questo codice vba.

Per ogni ws In wb.Worksheets 'tranne il foglio principale dal ciclo If ws.Name "Master" Then ws.Activate lastRow = Cells(Rows.Count, startCol).End(xlUp).Row lastCol = Cells(startRow, Columns. Count).End(xlToLeft).Column 'ottieni i dati da ogni foglio di lavoro e copiali nel foglio principale Range(Cells(startRow, startCol), Cells(lastRow, lastCol)).Copy _ mtr.Range("A" & mtr. Cells(Rows.Count, 1).End(xlUp).Row + 1) End If Next ws

Negli articoli precedenti abbiamo imparato come scorrere i fogli e come ottenere l'ultima riga e colonna utilizzando vba.

Qui stiamo scorrendo ogni foglio nella cartella di lavoro principale usando il ciclo for.
Per ogni ws In wb.Fogli di lavoro

Quindi escludiamo il foglio "master" dal ciclo, poiché consolideremo i nostri dati in quel foglio.

Quindi otteniamo l'ultima riga e l'ultimo numero di colonna.

Ora la prossima riga è molto importante. Abbiamo eseguito più operazioni in una riga.
Range(Cells(startRow, startCol), Cells(lastRow, lastCol)).Copia _
mtr.Intervallo("A" & mtr.Celle(Righe.Conteggio, 1).Fine(xlSu).Riga + 1)

Per prima cosa formiamo un intervallo usando startRow, startCol e lastRow e lastCol.

Range(Cells(startRow, startCol), Cells(lastRow, lastCol)) Lo abbiamo copiato usando il metodo copy di range. Range(Cells(startRow, startCol), Cells(lastRow, lastCol)).Copy Lo abbiamo incollato direttamente nella prima cella vuota dopo l'ultima cella non vuota nella colonna A del foglio principale (mtr.Cells(Rows.Count, 1).End (xlUp).Riga + 1). Range(Cells(startRow, startCol), Cells(lastRow, lastCol)).Copy _ mtr.Range("A" & mtr.Cells(Rows.Count, 1).End(xlUp).Row + 1)

Questo ciclo viene eseguito per tutti i fogli e copia i dati di ciascun foglio nel foglio principale.

Infine, alla fine della macro attiviamo il foglio master per vedere l'output.

Quindi sì ragazzi, è così che puoi unire ogni foglio in una cartella di lavoro. Fammi sapere se hai qualche domanda su questo codice VBA o su qualsiasi argomento Excel nella sezione commenti qui sotto.
Download file:

Consolida_Unisci più fogli di lavoro in un foglio principale utilizzando VBA

Articoli Correlati:

Come scorrere i fogli in loop

come ottenere l'ultima riga e colonna usando vba

Elimina i fogli senza richieste di conferma utilizzando VBA in Microsoft Excel

Aggiungi e salva una nuova cartella di lavoro utilizzando VBA in Microsoft Excel 2016

Visualizza un messaggio sulla barra di stato VBA di Excel

Disattiva i messaggi di avviso utilizzando VBA in Microsoft Excel 2016

Articoli popolari:

La funzione CERCA.VERT in Excel

CONTA.SE in Excel 2016

Come utilizzare la funzione SOMMA.SE in Excel