Tabellen aus Sheets zusammenführen

VBA und Makros
Codeschnipsel
Arbeitsblatt
Konsolidierung
Sammeln
Einsammeln
Excel

Ausgangslage - Was tut dieser Code-Schnipsel?

Zusammenführen von Tabellen aus mehreren Arbeitsblättern der geöffneten Arbeitsmappe / Datei zu einer großen Tabelle. Hierzu habe ich ein kleines Beispiel geschrieben. Einfach entsprechend anpassen und schon haben Sie eine Automatisierung Ihres Sammelvorganges realisiert.

Der Quelltext

Option Explicit
' Original-Quelltext unter: https://www.online-vba.de/tabellen-aus-sheets-zusammenfuehren
' Express-Hilfe für VBA unter https://www.online-vba.de/vba-expresshilfe
' Es gelten die Nutzungsbedingungen von Online-VBA.de

Public Sub OVBAde_DatenTabellenAusMehrerenSheetsEinsammeln()
  Dim oTargetSheet As Object
  Dim oSheet As Object
  Dim lErgebnisZeile As Long
  Dim i As Long
  Dim z As Long
  Dim s As Long
    
    Application.ScreenUpdating = False 'Das "Flackern" ausstellen
    
    'Schritt 1: Neues Arbeitsblatt für die Ergebnisse erstellen
    Set oTargetSheet = ActiveWorkbook.Sheets.Add
    
    'Alternativ: Zuweisung eines bereits vorhandenen Blattes mit vorherigem Löschen
    'Set oTargetSheet = ActiveWorkbook.Sheets("VorhandenesBlatt")
    'oTargetSheet.Cells.ClearContents 'Nur Inhalte löschen
    
    lErgebnisZeile = 2 'Ergebnisse eintragen ab Zeile 2
    
    'Schritt 2: Schleife über alle Sheets
    For Each oSheet In ActiveWorkbook.Sheets
    
        'Schritt 3: Datenübertragung nur, wenn nicht das neue Blatt vorliegt
        If oSheet.Name <> oTargetSheet.Name Then
        
            'Wenn die Ergebniszeile 2 ist, nehmen wir noch einmalig die Tabellenüberschriften mit
            If lErgebnisZeile = 2 Then
                oTargetSheet.Cells(1, 1).Value = "Quellblatt"
                For i = 1 To 10 'Überschriften der Spalten 1 bis 10 übertragen
                    oTargetSheet.Cells(1, i + 1).Value = oSheet.Cells(1, i).Value
                Next i
            End If
            
            'Eigentliche Datenübertragung - Alle Zeilen der Sheets ab Zeile 2 bis Tabellenende
            For z = 2 To oSheet.UsedRange.Rows.Count
                'Blattnamen in Spalte 1 eintragen
                oTargetSheet.Cells(lErgebnisZeile, 1).Value = CStr(oSheet.Name)
                For s = 1 To 10 'Spalten 1 bis 10 übertragen
                    oTargetSheet.Cells(lErgebnisZeile, s + 1).Value = oSheet.Cells(z, s).Value
                Next s
                lErgebnisZeile = lErgebnisZeile + 1 'nächste Zeile auf dem Ergebnisblatt
            Next z
            
        End If
        
    Next oSheet 'nächstes Arbeitsblatt
    
    Application.ScreenUpdating = True 'Das Bildschirm-Aktualisieren wieder einschalten
    
    'Variablen aufräumen
    Set oTargetSheet = Nothing
    Set oSheet = Nothing
End Sub

Anmerkungen und Hinweise

Dieser Codeschnipsel wurde geschrieben von Marc Wershoven im Jahr 2013.
Die Nutzung erfolgt auf eigene Gefahr. Bitte denken Sie immer zuerst an eine ausreichende Datensicherung. Wir können keinen kostenlosen Support anbieten. Es gelten unsere Nutzungs­bedingungen.


So einfach läuft unsere VBA-Expresshilfe ab

1
Senden Sie uns Ihre Office-Datei oder Ihren VBA-Code (gerne anonymisiert) mit einer kurzen Problembeschreibung oder Ihrem Erweiterungswunsch per E-Mail.
2
Wir analysieren Ihr Anliegen schnell und schicken Ihnen umgehend (tagsüber meist innerhalb von 1-2 Stunden) ein Festpreis-Angebot.
3
Nach Ihrer Zustimmung lösen wir Ihr Problem (meist noch am gleichen Tag) oder setzen Ihre Erweiterung zuverlässig um – inklusive verständlicher Dokumentation der durchgeführten Maßnahmen.

Bereit für den nächsten Schritt?!

Kontaktieren Sie uns!

Bereit, Zeit und Nerven zu sparen?
Lassen Sie uns gemeinsam herausfinden, wie Ihre Prozesse einfacher, digitaler und effizienter werden. In einem kostenlosen Beratungsgespräch zeigen wir Ihnen erste Ideen – ganz unverbindlich.







Mit einem * gekennzeichnete Eingabefelder sind Pflichtfelder.
Datenschutzhinweise zum Kontaktformular: Die von Ihnen im Kontaktformular bereitgestellten Daten werden ausschließlich zur Bearbeitung Ihrer Anfrage verwendet und nicht ohne Ihre Zustimmung an Dritte weitergegeben. Ihre Daten werden nur für den Zeitraum gespeichert, der zur Bearbeitung Ihrer Anfrage erforderlich ist. Weitere Hinweise zum Datenschutz finden Sie in unserer Datenschutzerklärung.
Hinweise zur Kontaktaufnahme: Tagsüber erhalten Sie per E-Mail meistens innerhalb von nur einer Stunde eine Antwort! Wir antworten auf E-Mails sehr oft auch außerhalb der üblichen Geschäftszeiten. Wir freuen uns auf Ihre Nachrichten! Wir führen viele Beratungsgespräche und nehmen an digitalen Kommunikationssitzungen teil, daher erreichen Sie uns ggf. nicht immer sofort per Telefon. Wir rufen selbstverständlich zurück! Bei der angegebenen Telefonnummer handelt es sich um eine deutsche Mobilfunkrufnummer.
Hinweise zu Dateianhängen: Wenn Sie uns Dokumente und Dateien zukommen lassen möchten, welche personenbezogene Daten enthalten, und wir diese Dateien einsehen, bearbeiten oder verarbeiten sollen, müssen Sie vorab einen Vertrag zur Auftragsverarbeitung (laut DSGVO) mit uns abschließen. Nehmen Sie dazu bitte Kontakt mit uns auf, wir stellen Ihnen gerne einen solchen Vertrag zur Verfügung. Alternativ können Sie alle personenbezogenen und sensiblen Daten vollständig anonymisieren, bevor Sie uns die Dateien zusenden. Enthalten Ihre Dateien keinerlei personenbezogene Daten, benötigen Sie auch keinen zusätzlichen Vertrag zur Auftragsverarbeitung mit uns. Denn zur Realisierung Ihrer Projekte und Auftragsprogrammierungen benötigen wir keine echten Personendaten. Bei der Übermittlung von Daten verwenden Sie bitte immer eine ausreichende Verschlüsselung.
Hinweis: Für die vollständige Funktion dieser Website ist JavaScript erforderlich.
Bitte aktivieren Sie JavaScript in Ihrem Browser, um alle Inhalte und interaktiven Funktionen nutzen zu können.