In diesem Artikel erstellen wir ein Makro, um Daten aus allen Blättern in der Arbeitsmappe in ein neues Blatt zu kopieren.
Rohdaten für dieses Beispiel bestehen aus Mitarbeiterdetails aus verschiedenen Abteilungen in verschiedenen Blättern. Wir möchten Mitarbeiterdetails in einem einzigen Blatt konsolidieren.
Zur Konsolidierung der Daten haben wir das Makro „CopyRangeFromMultipleSheets“ erstellt. Dieses Makro kann durch Klicken auf die Schaltfläche „Daten konsolidieren“ ausgeführt werden.
Das Makro erstellt ein neues Arbeitsblatt und fügt die konsolidierten Daten aus allen Arbeitsblättern ein.
Codeerklärung
'Durchlaufen' aller Blätter, um zu prüfen, ob ein "Master"-Blatt vorhanden ist.
Für jede Quelle in ThisWorkbook.Worksheets
Wenn Source.Name = "Master" Then
MsgBox "Stammblatt existiert bereits"
Abo beenden
Ende Wenn
Nächste
Der obige Code wird verwendet, um zu überprüfen, ob das Blatt "Master" in der Arbeitsmappe vorhanden ist. Wenn das Blatt „Master“ in der Arbeitsmappe vorhanden ist, wird der Code beendet und eine Fehlermeldung angezeigt.
Source.Range("A1").SpecialCells(xlLastCell).Row
Der obige Code wird verwendet, um die Zeilennummer der letzten Zelle im Blatt zu erhalten.
Source.Range("A1", Range("A1").SpecialCells(xlLastCell)).Copy Destination.Range("A" & DestLastRow)
Der obige Code wird verwendet, um den angegebenen Bereich in die definierte Zelle zu kopieren.
Bitte folgen Sie unten für den Code
Sub CopyRangeFromMultipleSheets() 'Variablen deklarieren Dim Source As Worksheet Dim Destination As Worksheet Dim SourceLastRow, DestLastRow As Long Application.ScreenUpdating = False 'Durchlaufen aller Blätter, um zu prüfen, ob ein "Master"-Blatt für jede Quelle in ThisWorkbook existiert.Worksheets If Source.Name = "Master" Then MsgBox "Master-Blatt existiert bereits" Exit Sub End If Next 'Einfügen eines neuen Blattes nach dem "Haupt"-Blatt Set Destination = Worksheets.Add(after:=Sheets("Main")) Destination.Name = " Master" 'Durchlaufen aller Blätter in der Arbeitsmappe für jede Quelle in ThisWorkbook.Worksheets 'Verhindern der Konsolidierung von Daten aus den Blättern "Main" und "Master" If Source.Name "Main" And Source.Name "Master" Then SourceLastRow = Source .Range("A1").SpecialCells(xlLastCell).Row Source.Activate If Source.UsedRange.Count > 1 Then DestLastRow = Sheets("Master").Range("A1").SpecialCells(xlLastCell).Row If DestLastRow = 1 Then 'Daten vom Quellblatt in das Zielblatt kopieren Source.Range("A 1", Range("A1").SpecialCells(xlLastCell)).Copy Destination.Range("A" & DestLastRow) Else Source.Range("A2", Range("A1").SpecialCells(xlCellTypeLastCell)).Copy Destination.Range("A" & (DestLastRow + 1)) End If End If End If Next Destination.Activate Application.ScreenUpdating = True End Sub
Wenn Ihnen dieser Blog gefallen hat, teilen Sie ihn mit Ihren Freunden auf Facebook. Außerdem können Sie uns auf Twitter und Facebook folgen.
Wir würden uns freuen, von Ihnen zu hören, lassen Sie uns wissen, wie wir unsere Arbeit verbessern und für Sie verbessern können. Schreiben Sie uns auf der E-Mail-Site