Consolidare / Unire più fogli di lavoro in un unico foglio master utilizzando VBA
A volte vogliamo unire più fogli in un unico foglio in modo da poter analizzare facilmente i dati e trasformarli in alcune informazioni utili. Questo articolo ti spiegherà come unire più fogli di lavoro in un 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”. Gli altri nomi di fogli non contano.
Ora esegui questa macro.
Sub Merge_Sheets() Dim startRow, startCol, lastRow, lastCol As Long Dim headers As Range 'Set Master sheet for consolidation Set mtr = Worksheets("Master") Set wb = ThisWorkbook 'Get Headers Set headers = Application.InputBox("Select the Headers", Type:=8) 'Copy Headers into master headers.Copy mtr.Range("A1") startRow = headers.Row + 1 startCol = headers.Column Debug.Print startRow, startCol 'loop through all sheets For Each ws In wb.Worksheets 'except the master sheet from looping If ws.Name <> "Master" Then ws.Activate lastRow = Cells(Rows.Count, startCol).End(xlUp).Row lastCol = Cells(startRow, Columns.Count).End(xlToLeft).Column 'get data from each worksheet and copy it into Master sheet 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").Activate End Sub
Come unire i fogli usando questa macro VBA?
-
Inserisci un nuovo foglio e chiamalo “Master” nella cartella di lavoro. Rinominalo più tardi, se lo desideri.
-
Inserisci un modulo nell’editor VBA e copia sopra il codice VBA.
-
Esegui la macro.
-
Ti verrà chiesto di selezionare le intestazioni. 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 oggetti e 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.
For Each ws In wb.Worksheets 'except the master sheet from looping If ws.Name <> "Master" Then ws.Activate lastRow = Cells(Rows.Count, startCol).End(xlUp).Row lastCol = Cells(startRow, Columns.Count).End(xlToLeft).Column 'get data from each worksheet and copy it into Master sheet 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 usando vba.
Qui stiamo scorrendo ogni foglio nella cartella di lavoro principale usando il ciclo for.
Per ogni ws In wb.Worksheets Quindi escludiamo il foglio “principale” dal ciclo, poiché consolideremo i nostri dati in quel foglio.
Quindi otteniamo l’ultima riga e il numero dell’ultima colonna.
Ora la riga successiva è molto importante. Abbiamo eseguito più operazioni in una riga.
Intervallo (Cells (startRow, startCol), Cells (lastRow, lastCol)). Copia _ mtr.Range (“A” & mtr.Cells (Rows.Count, 1) .End (xlUp) .Row + 1)
Per prima cosa formiamo un intervallo usando startRow, startCol e lastRow e lastCol.
Range(Cells(startRow, startCol), Cells(lastRow, lastCol)) We have copied it using copy method of range. Range(Cells(startRow, startCol), Cells(lastRow, lastCol)).Copy We pasted it directly into first blank cell after last non blank cell in column A of master sheet (mtr.Cells(Rows.Count, 1).End(xlUp).Row + 1). Range(Cells(startRow, startCol), Cells(lastRow, lastCol)).Copy _ mtr.Range("A" & mtr.Cells(Rows.Count, 1).End(xlUp).Row + 1)
Questo esegue un ciclo per tutti i fogli e copia i dati di ogni foglio nel foglio principale.
Infine, alla fine della macro attiviamo il foglio principale per vedere l’output.
Quindi sì ragazzi, è così che puoi unire ogni foglio in una cartella di lavoro. Fammi sapere se hai qualche domanda riguardante questo codice VBA o qualsiasi argomento Excel nella sezione commenti qui sotto.
Scarica il file:
`link: /wp-content-uploads-2019-11-Consolidate_Merge-multiple-worksheets-into-one-master-sheet-using-VBA.xls [__ Consolida_Unisci più fogli di lavoro in un foglio principale usando VBA]
Articoli correlati:
Come scorrere i fogli
come ottenere l’ultima riga e colonna usando vba
link: / files-workbook-and-worksheets-in-vba-add-and-save-new-workbook-using-vba-in-microsoft-excel [Aggiungi e salva una nuova cartella di lavoro usando VBA in Microsoft Excel 2016]
link: / menu-barre degli strumenti-barra di stato-in-vba-mostra-un-messaggio-sulla-barra di stato-utilizzando-vba-in-microsoft-excel [Visualizza un messaggio sulla barra di stato VBA di Excel]
link: / general-topics-in-vba-turn-off-warning-messages-using-vba-in-microsoft-excel [Disattiva i messaggi di avviso usando VBA in Microsoft Excel 2016]
Articoli popolari:
link: / formule-e-funzioni-introduzione-di-vlookup-funzione [La funzione CERCA.VERT in Excel]
link: / tips-countif-in-microsoft-excel [CONTA.SE in Excel 2016]
link: / excel-formula-and-function-excel-sumif-function [Come usare la funzione SUMIF in Excel]