Wenn Sie mit unterschiedlichen Datenquellen arbeiten, haben Sie möglicherweise oft Schwierigkeiten, mehrere Arbeitsmappen und Arbeitsblätter zu kompilieren, bevor Sie zu einem endgültigen Datenelement gelangen. Stellen Sie sich eine Situation vor, in der Sie einige hundert Arbeitsmappen kombinieren müssen, bevor Sie Ihren Tag überhaupt beginnen können.

Niemand möchte endlose Stunden damit verbringen, an verschiedenen Quellen zu arbeiten, jede Arbeitsmappe zu öffnen, die Daten aus verschiedenen Blättern zu kopieren und einzufügen, bevor schließlich eine konsolidierte Arbeitsmappe erstellt wird. Was ist, wenn ein VBA-Makro dies für Sie tun kann?

Mit diesem Handbuch können Sie Ihren eigenen Excel-VBA-Makrocode erstellen, um mehrere Arbeitsmappen innerhalb weniger Minuten zu konsolidieren (wenn die Datendateien sehr groß sind).

Voraussetzungen zum Erstellen Ihres eigenen VBA-Makrocodes

Sie benötigen eine Arbeitsmappe, um den VBA-Code zu beherbergen, während der Rest der Quelldaten-Arbeitsmappen getrennt ist. Erstellen Sie zusätzlich eine Arbeitsmappe

instagram viewer
Konsolidiert um die konsolidierten Daten aus all Ihren Arbeitsmappen zu speichern.

Einen Ordner erstellen Konsolidierung an Ihrem bevorzugten Speicherort, um alle Ihre Quellarbeitsmappen zu speichern. Wenn das Makro ausgeführt wird, wechselt es durch jede in diesem Ordner gespeicherte Arbeitsmappe, kopiert den Inhalt aus verschiedenen Blättern und platziert sie in der konsolidierten Arbeitsmappe.

Erstellen Sie Ihren eigenen Excel-VBA-Code

Sobald die Voraussetzungen geklärt sind, ist es an der Zeit, sich mit dem Code zu befassen und die Grundlagen zu hacken, um ihn an Ihre Anforderungen anzupassen.

Verwandt: Erweiterte Microsoft Excel-Funktionen, die Sie kennen müssen

Drücken Sie die Alt+F11 -Taste in Excel, um den VBA-Makrocode-Editor zu öffnen. Fügen Sie den unten geschriebenen Code ein und speichern Sie die Datei als Makro-aktivierte Arbeitsmappe (.xlsm Verlängerung).

Unter Openfiles()

'deklarieren Sie die im VBA-Code verwendeten Variablen

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

'Diese Funktionen deaktivieren, um die Codeverarbeitung zu verbessern

Mit Bewerbung
.DisplayAlerts = False
.ScreenUpdating = False
Ende mit

'ändern Sie den Pfad des Ordners, in dem Ihre Dateien gespeichert werden

MyFolder = InputBox("Pfad des Konsolidierungsordners eingeben") & "\"

'definieren Sie die Referenz des Ordners in einer Makrovariablen

MyFile = Dir (MyFolder)

'Öffnen Sie eine Schleife, um durch jede einzelne im Ordner gespeicherte Arbeitsmappe zu blättern

Do While Len (MyFile) > 0

'Konsolidierungsarbeitsmappe aktivieren

Windows("Konsolidierung").Aktivieren

'berechnen Sie die letzte gefüllte Zeile

Reichweite("a1048576").Wählen
Auswahl. Ende (xlUp).Wählen
Aktive Zelle. Offset (1, 0).Auswählen

'Öffne die erste Arbeitsmappe im Konsolidierungsordner

Arbeitsbücher. Dateiname öffnen:=MyFolder & MyFile

Windows (MyFile).Aktivieren

'durch jedes Blatt in den Arbeitsmappen wechseln, um die Daten zu kopieren

Dim ws als Arbeitsblatt
Für jedes ws in Sheets

ws. aktivieren Sie
ws. AutoFilterMode = False

'ignoriere die Kopfzeile und kopiere die Daten aus Zeile 2
Wenn Zellen (2, 1) = "" Dann Gehe zu 1

Gehe zu 10

1: Weiter

10: Range("a2:az20000").Copy

Windows("Konsolidierung").Aktivieren

'kopierten Inhalt einfügen

ActiveSheet. Paste

Windows (MyFile).Aktivieren

'Schließen Sie die geöffnete Arbeitsmappe, sobald die Daten eingefügt wurden

ActiveWorkbook. Nah dran

'Cache leeren, um den Wert der nächsten Arbeitsmappe zu speichern

MyFile = Dir()

'öffne die nächste Datei im Ordner

Schleife

'aktivieren Sie die deaktivierten Funktionen für die zukünftige Verwendung

Mit Bewerbung
.DisplayAlerts = True
.ScreenUpdating = True
Ende mit

End Sub

Der VBA-Code erklärt

Der erste Teil des Codes definiert eine Unterroutine, die Ihren gesamten VBA-Code enthält. Definieren Sie das Unterprogramm mit unter, gefolgt vom Namen des Codes. Der Untername kann alles sein; Idealerweise sollten Sie einen Namen beibehalten, der für den Code, den Sie schreiben möchten, relevant ist.

Verwandt: Websites und Blogs zum Erlernen von Excel-Tipps und -Tricks

Excel VBA versteht vom Benutzer erstellte Variablen und ihre entsprechenden Datentypen, die mit deklariert wurden trübe (Abmessungen).

Um die Verarbeitungsgeschwindigkeit Ihres Codes zu erhöhen, können Sie die Bildschirmaktualisierung deaktivieren und alle Warnungen unterdrücken, da dies die Codeausführung verlangsamt.

Der Benutzer wird nach dem Pfad des Ordners gefragt, in dem die Datendateien gespeichert sind. Es wird eine Schleife erstellt, um jede im Ordner gespeicherte Arbeitsmappe zu öffnen, die Daten aus jedem Blatt zu kopieren und an die Datei anzuhängen Konsolidierung Arbeitsmappe.

Die Arbeitsmappe Konsolidierung wird aktiviert, damit Excel VBA die letzte ausgefüllte Zeile berechnen kann. Die letzte Zelle innerhalb des Arbeitsblatts wird ausgewählt und die letzte Zeile innerhalb der Arbeitsmappe mit der Offset-Funktion berechnet. Dies ist sehr nützlich, wenn das Makro mit dem Anhängen von Daten aus den Quelldateien beginnt.

Wenn die Schleife die erste Quelldatei öffnet, werden die Filter aus jedem einzelnen Blatt entfernt (wenn sie existieren), und die Daten von A2 bis AZ20000 werden kopiert und in die Konsolidierung eingefügt Arbeitsmappe.

Der Vorgang wird wiederholt, bis alle Arbeitsmappenblätter in der Master-Arbeitsmappe angehängt sind.

Verwandt: Die besten Online-Kurse zum Meistern von fortgeschrittenem Excel

Schließlich wird die Quelldatei geschlossen, sobald alle Daten eingefügt wurden. Die nächste Arbeitsmappe wird geöffnet, damit das VBA-Makro die gleichen Schritte für den nächsten Satz von Dateien wiederholen kann.

Die Schleife ist so codiert, dass sie ausgeführt wird, bis alle Dateien in der Master-Arbeitsmappe automatisch aktualisiert wurden.

Benutzerbasierte Anpassungen

Manchmal möchten Sie sich keine Gedanken über integrierte Eingabeaufforderungen machen, insbesondere wenn Sie der Endbenutzer sind. Wenn Sie den Pfad des Consolidation-Ordners lieber im Code festcodieren möchten, können Sie diesen Teil des Codes ändern:

MyFolder = InputBox("Pfad des Konsolidierungsordners eingeben") & "\"

Zu:

MyFolder = "Ordnerpfad" & "\"

Darüber hinaus können Sie auch die Spaltenverweise ändern, da der Schritt in diesem Code nicht enthalten ist. Ersetzen Sie einfach die Endspaltenreferenz durch Ihren zuletzt ausgefüllten Spaltenwert (in diesem Fall AZ). Beachten Sie, dass die letzte gefüllte Zeile über den Makrocode berechnet wird, sodass Sie nur die Spaltenreferenz ändern müssen.

Um dieses Makro optimal zu nutzen, können Sie es nur verwenden, um Arbeitsmappen im gleichen Format zu konsolidieren. Bei unterschiedlichen Strukturen können Sie dieses VBA-Makro nicht verwenden.

Konsolidieren mehrerer Arbeitsmappen mit Excel VBA-Makro

Das Erstellen und Ändern eines Excel-VBA-Codes ist relativ einfach, insbesondere wenn Sie einige der Nuancen innerhalb des Codes verstehen. VBA durchläuft systematisch jede Codezeile und führt sie Zeile für Zeile aus.

Wenn Sie Änderungen am Code vornehmen, müssen Sie sicherstellen, dass Sie die Reihenfolge der Codes nicht ändern, da dies die Ausführung des Codes unterbricht.

5 coole Microsoft Excel-Makros zum Sortieren von Daten

Machen Sie die Datenverwaltung mit diesen Excel-Makros zum Kinderspiel.

Weiter lesen

TeilenTweetEmail
Verwandte Themen
  • Programmierung
  • Programmierung
  • Microsoft Excel
Über den Autor
Gaurav Siyal (19 Artikel veröffentlicht)

Gaurav Siyal verfügt über zwei Jahre Erfahrung im Schreiben von Dokumenten für eine Reihe von digitalen Marketingfirmen und Software-Lebenszyklusdokumenten.

Mehr von Gaurav Siyal

Abonniere unseren Newsletter

Abonnieren Sie unseren Newsletter für technische Tipps, Rezensionen, kostenlose E-Books und exklusive Angebote!

Klicken Sie hier, um zu abonnieren