Das Zusammenführen von Dutzenden oder sogar Hunderten von Excel-Tabellenblättern in eines ist eine mühsame Aufgabe, wenn sie manuell durchgeführt wird. Glücklicherweise kann dieser komplexe Prozess durch den Einsatz von VBA-Makros mit nur einem Klick automatisiert werden, was Ihnen erheblich Zeit und Aufwand spart.
Für Fachleute, die häufig Datenkonsolidierung aus verschiedenen Abteilungen oder periodischen Berichten durchführen, ist diese Technik unerlässlich. Die Verwendung eines VBA-Makros zum Zusammenführen von Excel-Tabellenblättern ist nicht nur effizient, sondern minimiert auch das Risiko menschlicher Fehler, die beim manuellen Kopieren von Daten häufig auftreten.
Vorteile der Verwendung von VBA-Makros
Im Vergleich zu konventionellen Copy-Paste-Methoden bietet die Automatisierung mit VBA mehrere Vorteile. Erstens ist der Ausführungsprozess sehr schnell. Zweitens ist die Datenkonsistenz gewährleistet, da sie durch das Skript verwaltet wird. Darüber hinaus können Sie den Code an spezifische Bedürfnisse anpassen, wie das Zusammenführen von Daten ohne sich wiederholende Kopfzeilen.
VBA-Skript zum Zusammenführen aller Tabellenblätter
Nachfolgend finden Sie ein zuverlässiges und getestetes VBA-Skript. Dieser Code führt Daten aus allen Blättern einer Arbeitsmappe, mit Ausnahme des resultierenden zusammengeführten Blatts selbst, in einem neuen Blatt namens „RDBMergeSheet“ zusammen.
Sub CopyDataWithoutHeaders()
Dim sh As Worksheet
Dim DestSh As Worksheet
Dim Last As Long
Dim shLast As Long
Dim CopyRng As Range
Dim StartRow As Long
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
'Blatt "RDBMergeSheet" löschen, falls vorhanden
Application.DisplayAlerts = False
On Error Resume Next
ActiveWorkbook.Worksheets("RDBMergeSheet").Delete
On Error GoTo 0
Application.DisplayAlerts = True
'Neues Arbeitsblatt namens "RDBMergeSheet" erstellen
Set DestSh = ActiveWorkbook.Worksheets.Add
DestSh.Name = "RDBMergeSheet"
StartRow = 2
'Alle Arbeitsblätter durchlaufen und Daten in DestSh kopieren
For Each sh In ActiveWorkbook.Worksheets
If IsError(Application.Match(sh.Name, _
Array(DestSh.Name, "Information"), 0)) Then
Last = LastRow(DestSh)
shLast = LastRow(sh)
If shLast > 0 And shLast >= StartRow Then
Set CopyRng = sh.Range(sh.Rows(StartRow), sh.Rows(shLast))
If Last + CopyRng.Rows.Count > DestSh.Rows.Count Then
MsgBox "Nicht genug Platz im Zielblatt"
GoTo ExitTheSub
End If
CopyRng.Copy
With DestSh.Cells(Last + 1, "A")
.PasteSpecial xlPasteValues
.PasteSpecial xlPasteFormats
Application.CutCopyMode = False
End With
End If
End If
Next
ExitTheSub:
Application.GoTo DestSh.Cells(1)
DestSh.Columns.AutoFit
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub
'Unterstützungsfunktion zum Finden der letzten Zeile
Function LastRow(sh As Worksheet)
On Error Resume Next
LastRow = sh.Cells.Find(What:="*", _
After:=sh.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
On Error GoTo 0
End FunctionBeachten Sie, dass dieses Skript die Unterstützungsfunktion LastRow benötigt, die enthalten ist, um die letzte Zeile mit Daten genau zu erkennen.

So verwenden Sie dieses Skript
- Öffnen Sie Ihre Excel-Arbeitsmappe.
- Drücken Sie ALT + F11, um den VBA-Editor zu öffnen.
- Klicken Sie im Projekt-Explorer mit der rechten Maustaste auf Ihre Arbeitsmappe und wählen Sie Einfügen > Modul.
- Kopieren Sie den gesamten obigen Code und fügen Sie ihn in das leere Modulfenster ein.
- Schließen Sie den VBA-Editor und kehren Sie zu Excel zurück.
- Führen Sie das Makro aus, indem Sie ALT + F8 drücken, wählen Sie CopyDataWithoutHeaders und klicken Sie dann auf Ausführen.
Dadurch werden alle Daten aus verschiedenen Blättern ordentlich in einem neuen Blatt zusammengeführt. Daher können Sie sich auf die Datenanalyse konzentrieren, anstatt auf den Erfassungsprozess.

