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:

008

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?

  1. Inserisci un nuovo foglio e chiamalo “Master” nella cartella di lavoro. Rinominalo più tardi, se lo desideri.

  2. Inserisci un modulo nell’editor VBA e copia sopra il codice VBA.

  3. Esegui la macro.

  4. Ti verrà chiesto di selezionare le intestazioni. Seleziona l’intestazione e premi OK.

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

0012

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]