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
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 Sheetsws. aktivieren Sie
ws. AutoFilterMode = False'ignoriere die Kopfzeile und kopiere die Daten aus Zeile 2
Wenn Zellen (2, 1) = "" Dann Gehe zu 1Gehe 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.
Machen Sie die Datenverwaltung mit diesen Excel-Makros zum Kinderspiel.
Weiter lesen
- Programmierung
- Programmierung
- Microsoft Excel
Gaurav Siyal verfügt über zwei Jahre Erfahrung im Schreiben von Dokumenten für eine Reihe von digitalen Marketingfirmen und Software-Lebenszyklusdokumenten.
Abonniere unseren Newsletter
Abonnieren Sie unseren Newsletter für technische Tipps, Rezensionen, kostenlose E-Books und exklusive Angebote!
Klicken Sie hier, um zu abonnieren