
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.