Excel - Daten aus mehreren Blättern in ein Blatt kopieren

Excel - Daten aus mehreren Blättern in ein Blatt kopieren

Ich verwende ein Programm, das Daten in mehrere Blätter exportiert, und ich benötige diese alle im selben Blatt untereinander.

Zu den Arbeitsblättern: Die Namen ändern sich bei jedem Export, daher muss dies nicht definiert werden, da es manchmal über 100 verschiedene Blätter gibt.

In den Arbeitsblättern befinden sich Daten aus unterschiedlichen Zeilen und Spalten (und ich muss sie bis zur leeren Zeile in das Hauptblatt in die nächste verfügbare leere Zeile kopieren).

Das Arbeitsblatt, in das alle Daten kopiert werden müssen – Dies ist zunächst leer, ich brauche jedoch alle Daten übereinander, basierend auf einer Zeilenkopie aus den anderen Arbeitsblättern. (dieses kann bei Bedarf einen definierten Namen haben)

Ich bin neu bei VBA, daher hoffe ich, dass die obige Erklärung hilft.

Mein aktuelles VBA funktioniert nicht:

 Sub SheetLoopPasteData()

Dim ws As Worksheet
Dim wsSheet As Worksheet
Set wsSheet = Sheets("Sheet2")

For Each ws In Worksheets
    ws.Activate
    variable = Cells(Rows.Count, 1).End(xlUp).Row
    Rows("1:" & variable).Copy _
    Destination:=wsSheet.Range("A" & (wsSheet.Range("A" & wsSheet.Rows.Count).End(xlDown).Row + 1))

Next



End Sub

Antwort1

Ich möchte vorschlagen, dass VBA (Makro) Ihnen dabei hilft, verwendete Bereiche aus allen Arbeitsblättern in ein neues zu kopieren. Das funktioniert genau wie die Datenkonsolidierung.

Sub CombineData()

    Dim I As Long
    Dim xRg As Range

    On Error Resume Next

    Worksheets.Add Sheets(1)

    ActiveSheet.Name = "MasterSheet"

   For I = 2 To Sheets.Count
        Set xRg = Sheets(1).UsedRange

        If I > 2 Then
            Set xRg = Sheets(1).Cells(xRg.Rows.Count + 1, 1)
        End If

        Sheets(I).Activate
        ActiveSheet.UsedRange.Copy xRg
    Next

End Sub

Wie es funktioniert:

  • KopierenundPastedieser Code als Modul.
  • Das Makro erstellt ein neues Blatt in der vorhandenen Arbeitsmappe mit dem NamenMasterSheet, welches editierbar ist.
  • Anstatt die Daten von der obersten Zeile in die letzte zu kopieren, habe ich dieGebrauchtbereichMethode, da alle Aktualisierungen berücksichtigt werden.

Antwort2

das ist sehr gut, ich muss jedoch einen bestimmten Bereich abdecken – ist das bitte möglich?


Ich möchte vorschlagen, dass VBA (Makro) Ihnen dabei hilft, verwendete Bereiche aus allen Arbeitsblättern in ein neues zu kopieren. Das funktioniert genau wie die Datenkonsolidierung.

Sub CombineData()

Dim I As Long
Dim xRg As Range

On Error Resume Next

Worksheets.Add Sheets(1)

ActiveSheet.Name = "MasterSheet"

Für I = 2 bis Blätter.Anzahl Setze xRg = Blätter(1).Verwendeter Bereich

    If I > 2 Then
        Set xRg = Sheets(1).Cells(xRg.Rows.Count + 1, 1)
    End If

    Sheets(I).Activate
    ActiveSheet.UsedRange.Copy xRg
Next

End Sub So funktioniert es:

Kopieren Sie diesen Code und fügen Sie ihn als Modul ein. Das Makro erstellt ein neues, bearbeitbares Arbeitsblatt mit dem Namen „MasterSheet“. Anstatt die Daten von der obersten Zeile bis zur letzten zu kopieren, habe ich die UsedRange-Methode verwendet, da sie alle Aktualisierungen berücksichtigt.

verwandte Informationen