Manchmal möchten wir mehrere Blätter zu einem Blatt zusammenführen, damit wir die Daten einfach analysieren und in nützliche Informationen umwandeln können. In diesem Artikel erfahren Sie, wie Sie mit VBA mehrere Arbeitsblätter zu einem Arbeitsblatt zusammenführen.

Beispiel:

008

Hier habe ich einige Daten vom Server abgerufen, die Daten in verschiedene Arbeitsblätter zurückgeben. Ich habe ein weiteres Blatt hinzugefügt und es als „Meister“ bezeichnet. Andere Blattnamen spielen keine Rolle.

Führen Sie nun dieses Makro aus.

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

Wie füge ich Blätter mit diesem VBA-Makro zusammen?

  1. Fügen Sie ein neues Blatt ein und nennen Sie es in der Arbeitsmappe „Master“. Benennen Sie es später um, wenn Sie möchten.

  2. Fügen Sie ein Modul in den VBA-Editor ein und kopieren Sie den obigen VBA-Code.

  3. Führen Sie das Makro aus.

  4. Sie werden aufgefordert, Überschriften auszuwählen. Wählen Sie die Überschrift und klicken Sie auf OK.

Und es ist geschafft. Alle Blätter werden im Master zusammengeführt.

0012

Wie funktioniert es?

Ich gehe davon aus, dass Sie die Grundlagen der Objekt- und Variablenerstellung in VBA kennen. Im ersten Teil haben wir Objekte und Variablen erstellt, die wir für unsere Operationen benötigen.

Nun, die meisten Dinge habe ich mit Kommentaren im VBA-Code erklärt.

Schauen wir uns den Hauptteil dieses VBA-Codes an.

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

In früheren Artikeln haben wir gelernt, wie man Blätter durchläuft und wie man mit vba die letzte Zeile und Spalte abruft.

Hier durchlaufen wir jedes Blatt in der Hauptarbeitsmappe mit der for-Schleife.

Für jedes ws In wb.Worksheets Dann schließen wir das „Master“ -Blatt von der Schleife aus, da wir unsere Daten in diesem Blatt konsolidieren werden.

Dann erhalten wir die letzte Zeile und die letzte Spaltennummer.

Jetzt ist die nächste Zeile sehr wichtig. Wir haben mehrere Operationen in einer Zeile durchgeführt.

Bereich (Zellen (startRow, startCol), Zellen (lastRow, lastCol)). Kopieren Sie _ mtr.Range („A“ & mtr.Cells (Rows.Count, 1) .End (xlUp) .Row + 1)

Zuerst bilden wir einen Bereich mit startRow, startCol und lastRow und 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)

Diese Schleife wird für alle Blätter ausgeführt und kopiert die Daten jedes Blattes in das Hauptblatt.

Schließlich aktivieren wir am Ende des Makros das Masterblatt, um die Ausgabe zu sehen.

Also ja Leute, so können Sie jedes Blatt in einer Arbeitsmappe zusammenführen. Lassen Sie mich wissen, wenn Sie Fragen zu diesem VBA-Code oder einem Excel-Thema im Kommentarbereich unten haben.

Datei herunterladen:

`link: /wp-content-uploads-2019-11-Consolidate_Merge-multiple-worksheets-into-one-master-sheet-using-VBA.xls [__ Consolidate_Merge mehrere Arbeitsblätter mit VBA zu einem Master Sheet zusammen]

Verwandte Artikel:

So durchlaufen Sie Blätter

wie man die letzte Zeile und Spalte mit vba

erhält //files-workbook-and-worksheets-in-vba/delete-sheets-without-confirmation-prompts-using-vba-in-microsoft-excel.html[Löschen Sie Blätter ohne Bestätigungsaufforderungen mit VBA in Microsoft Excel] `

link: / files-workbook-and-worksheets-in-vba-add-and-save-new-workbook-using-vba-in-microsoft-excel [Neue Arbeitsmappe mit VBA in Microsoft Excel 2016 hinzufügen und speichern]

link: / menüs-Symbolleisten-Statusleiste-in-vba-Anzeige-einer-Nachricht-in-der-Statusleiste-mit-vba-in-Microsoft-Excel [Anzeige einer Nachricht in der Excel VBA-Statusleiste]

link: / allgemeine-themen-in-vba-ausschalten-warnwarnmeldungen-mit-vba-in-microsoft-excel [Warnmeldungen mit VBA in Microsoft Excel 2016 ausschalten]

Beliebte Artikel:

link: / formeln-und-funktionen-einführung-der-vlookup-funktion [Die VLOOKUP-Funktion in Excel]

link: / tips-countif-in-microsoft-excel [COUNTIF in Excel 2016]

link: / excel-formel-und-funktion-excel-sumif-funktion [Verwendung der SUMIF-Funktion in Excel]