Excel-Tabellen automatisch zusammenführen

Advertisement

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.

Advertisement

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 Function

Beachten Sie, dass dieses Skript die Unterstützungsfunktion LastRow benötigt, die enthalten ist, um die letzte Zeile mit Daten genau zu erkennen.

Advertisement
VBA-Makro zum Zusammenführen von Excel-Tabellenblättern in der Microsoft Excel Oberfläche
Bild: VBA-Editor in Excel zeigt den Makro-Code zum Zusammenführen von Tabellenblättern.

So verwenden Sie dieses Skript

  1. Öffnen Sie Ihre Excel-Arbeitsmappe.
  2. Drücken Sie ALT + F11, um den VBA-Editor zu öffnen.
  3. Klicken Sie im Projekt-Explorer mit der rechten Maustaste auf Ihre Arbeitsmappe und wählen Sie Einfügen > Modul.
  4. Kopieren Sie den gesamten obigen Code und fügen Sie ihn in das leere Modulfenster ein.
  5. Schließen Sie den VBA-Editor und kehren Sie zu Excel zurück.
  6. 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.

Advertisement

Latest Articles