Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Mehrere Tabellenreiter untereinander kopieren

Mehrere Tabellenreiter untereinander kopieren
01.07.2019 18:32:40
Mara
Liebe VBA-Experten,
ich hoffe auf Eure Hilfe bei folgendem Problem:
Ich habe mehrere unterschiedliche Daten aus anderen Excel Tabellen konsolidiert in einer Excel Tabelle.
Diese sollen nun in einem Reiter untereinander gesammelt werden, um daraus eine Pivot Tabelle zu erstellen, d.h. ich benötige keine Formatierungen der Daten o.Ä.
Ich habe diesbezüglich bereits eine Variante gefunden, die funktioniert (s. https://www.herber.de/bbs/user/130679.xlsm).
Code:
Sub Pivot_Erstellung()
'Zusammenfügen der Daten untereinander, ohne Formeln
Application.ScreenUpdating = False 'Bildschirmflackern etc. ausschalten
Application.DisplayAlerts = False
Debug.Print ActiveSheet.Name 'Hinzufügen eines neuen Tabellenblatts mit dem Namen "Pivot", auf dem alle Daten untereinander gesammelt werden, um in einer Pivot Tabelle vereint werden zu können (nächster Schritt)
Sheets.Add
ActiveSheet.Name = "Pivot"
Sheets("A").Range("D7:J194").Copy
Sheets("Pivot").Range("A1").PasteSpecial xlPasteValues
Sheets("B").Range("D8:J194").Copy
Sheets("Pivot").Range("A189").PasteSpecial xlPasteValues
Sheets("C").Range("D8:J194").Copy
Sheets("Pivot").Range("A376").PasteSpecial xlPasteValues 'Achtung: Damit sich die Tabellen nicht beim Einfügen überschneiden, wird die letzte Zeile der eingefügten Daten +1 ergänzt
Sheets("D").Range("D8:J194").Copy
Sheets("Pivot").Range("A563").PasteSpecial xlPasteValues
Application.CutCopyMode = False
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Die Krux: Der Code ist auf die importierten Daten und damit auf die jeweiligen Reiter gemünzt, das heißt, wenn Kollegen damit arbeiten sollen, und die Namen der Reiter ändern, oder nicht alle aufgeführten Daten importieren, geht das Makro nicht auf.
Habt ihr eine Lösung, wie ich den Code so allgemein halten kann, dass die Logik weiterhin aufgeht?
Ich hoffe ich konnte mich einigermaßen verständlich ausdrücken. Bei Lösungsansätzen gerne mit Erläuterung, da ich gerne dazu lernen würde. :)
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mehrere Tabellenreiter untereinander kopieren
01.07.2019 20:56:40
Regina
Moin,
wenn alle Blätter bis auf das neue Blatt "Pivot" kopiert werden sollen müsste dieser Code passen:
Sub Pivot_Erstellung()
'Zusammenfügen der Daten untereinander, ohne Formeln
Dim wks As Worksheet
Dim lng_zeile As Long
Dim bol_erster As Boolean
Application.ScreenUpdating = False 'Bildschirmflackern etc. ausschalten
Application.DisplayAlerts = False
Debug.Print ActiveSheet.Name 'Hinzufügen eines neuen Tabellenblatts mit dem Namen "Pivot", auf  _
dem alle Daten untereinander gesammelt werden, um in einer Pivot Tabelle vereint werden zu können (nächster Schritt)
Sheets.Add
ActiveSheet.Name = "Pivot"
lng_zeile = 1
bol_erster = True
For Each wks In ActiveWorkbook.Worksheets
If wks.Name  "PivoT" Then
If bol_erster = True Then
wks.Range("D7:J194").Copy
bol_erster = False
Else
wks.Range("D8:J194").Copy
Sheets("Pivot").Range("A" & lng_zeile).PasteSpecial xlPasteValues
End If
lng_zeile = Sheets("Pivot").Cells(1048576, 1).End(xlUp).Row + 1
End If
Next
Application.CutCopyMode = False
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
Gruß
Regina
Anzeige
AW: Mehrere Tabellenreiter untereinander kopieren
02.07.2019 08:45:18
Daniel
Hi Regina,
sieht so aus, als wenn bei deinem Code das erste Blatt nur kopiert, aber nicht ins Pivot Blatt eingefügt wird. Die Paste Anweisung müsste hinter das "End If":
If wks.Name  "PivoT" Then
If bol_erster = True Then
wks.Range("D7:J194").Copy
bol_erster = False
Else
wks.Range("D8:J194").Copy
End If
Sheets("Pivot").Range("A" & lng_zeile).PasteSpecial xlPasteValues
lng_zeile = Sheets("Pivot").Cells(1048576, 1).End(xlUp).Row + 1
End If
Gruß
Daniel
Anzeige
AW: Mehrere Tabellenreiter untereinander kopieren
02.07.2019 09:02:04
Regina
Hi Daniel,
da hast Du natürlich vollkommen Recht. Habe das If.. später eingefügt, als mir die Zeile 7 wegen der Überschriften beim ersten Copy eingefallen sind, und dann das end if falsch gesetzt
Gruß
Regina
AW: Mehrere Tabellenreiter untereinander kopieren
02.07.2019 09:36:13
Mara
Hallo ihr beiden,
danke für eure tolle Hilfe, ich habe die Änderung nach Daniels Vorschlag umgesetzt und nun klappt alles fehlerfrei.
Vielen vielen Dank dafür!
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Mehrere Tabellenreiter untereinander kopieren


Schritt-für-Schritt-Anleitung

Um Daten aus mehreren Tabellenblättern in ein einziges Tabellenblatt zu kopieren, kannst Du den folgenden VBA-Code verwenden. Dieser Code fasst die Daten untereinander zusammen, ohne Formatierungen oder Formeln zu übernehmen:

Sub Pivot_Erstellung()
    ' Zusammenfügen der Daten untereinander, ohne Formeln
    Dim wks As Worksheet
    Dim lng_zeile As Long
    Dim bol_erster As Boolean

    Application.ScreenUpdating = False ' Bildschirmflackern etc. ausschalten
    Application.DisplayAlerts = False

    ' Hinzufügen eines neuen Tabellenblatts mit dem Namen "Pivot"
    Sheets.Add
    ActiveSheet.Name = "Pivot"
    lng_zeile = 1
    bol_erster = True

    For Each wks In ActiveWorkbook.Worksheets
        If wks.Name <> "Pivot" Then
            If bol_erster Then
                wks.Range("D7:J194").Copy
                bol_erster = False
            Else
                wks.Range("D8:J194").Copy
            End If

            Sheets("Pivot").Range("A" & lng_zeile).PasteSpecial xlPasteValues
            lng_zeile = Sheets("Pivot").Cells(1048576, 1).End(xlUp).Row + 1
        End If
    Next

    Application.CutCopyMode = False
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub

Dieser Code fügt alle Daten aus verschiedenen Blättern in den neuen Tabellenreiter "Pivot" ein. Achte darauf, dass die Bereiche in Range("D7:J194") je nach Deinen Anforderungen angepasst werden müssen.


Häufige Fehler und Lösungen

  1. Problem: Das erste Blatt wird kopiert, aber nicht eingefügt.

    • Lösung: Stelle sicher, dass die Paste-Anweisung außerhalb des If-Blocks für das erste Blatt steht. Siehe Beispiel in der Schritt-für-Schritt-Anleitung.
  2. Problem: Der Code funktioniert nicht, wenn die Tabellennamen geändert werden.

    • Lösung: Verwende den oben angegebenen Code, da er dynamisch auf alle Blätter außer "Pivot" zugreift.

Alternative Methoden

Falls Du die Methode ohne Makros bevorzugst, kannst Du die Daten manuell zusammenfassen:

  1. Öffne das erste Tabellenblatt und kopiere die gewünschten Daten.
  2. Wechsle zum "Pivot"-Blatt und füge die Daten ein.
  3. Wiederhole den Vorgang für jedes Tabellenblatt, wobei Du darauf achtest, die Daten untereinander einzufügen, um Überlappungen zu vermeiden.

Diese Methode eignet sich für kleinere Datenmengen, jedoch ist das Kopieren von excel mehrere tabellenblätter untereinander kopieren mit VBA effizienter bei großen Datenmengen.


Praktische Beispiele

Angenommen, Du hast vier Tabellenblätter mit den Namen "A", "B", "C" und "D", die jeweils Daten in den Zellen D7 bis J194 enthalten. Mit dem oben genannten VBA-Skript kannst Du die Daten aus jedem dieser Blätter in das neue "Pivot"-Blatt kopieren. Es ist wichtig, die Zellen in den Range-Befehlen entsprechend anzupassen, falls Deine Daten in anderen Zellen sind.


Tipps für Profis

  • Nutze die Application.ScreenUpdating und Application.DisplayAlerts, um die Benutzeroberfläche während der Ausführung des Makros nicht flackern zu lassen.
  • Wenn Du häufig mit mehreren Tabellenblättern arbeitest, speichere den VBA-Code in einem Modul, sodass Du ihn jederzeit wiederverwenden kannst.
  • Experimentiere mit dem Code, um ihn an Deine spezifischen Anforderungen anzupassen, z.B. durch das Hinzufügen von Bedingungen für bestimmte Daten.

FAQ: Häufige Fragen

1. Wie kann ich die Daten aus mehreren Tabellenblättern in ein Tabellenblatt kopieren ohne Makro?
Du kannst die Daten manuell kopieren und in das "Pivot"-Blatt einfügen, aber dies ist weniger effizient. Eine VBA-Lösung wird empfohlen.

2. Was passiert, wenn ich die Namen der Tabellenblätter ändere?
Der bereitgestellte VBA-Code passt sich automatisch an, solange die Blätter nicht "Pivot" heißen. Es ist wichtig, dass Du die Namen der Blätter nicht änderst, die nicht in den Code eingefügt sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige