Kopieren Sie einen Bereich von jedem Blatt in ein Blatt mit VBA in Microsoft Excel
einen Bereich von jedem Blatt in ein Blatt In diesem Artikel erstellen wir ein Makro, um Daten von allen Arbeitsblättern in der Arbeitsmappe auf ein neues Arbeitsblatt zu kopieren.
Die Rohdaten für dieses Beispiel bestehen aus Mitarbeiterdetails aus verschiedenen Abteilungen in verschiedenen Arbeitsblättern. Wir möchten Mitarbeiterdetails in einem einzigen Blatt zusammenfassen.
Wir haben das Makro „CopyRangeFromMultipleSheets“ für die Konsolidierung der Daten 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.
Code Erklärung
Durchlaufen Sie alle Blätter, um zu überprüfen, ob das Blatt „Master“ vorhanden ist.
Für jede Quelle in ThisWorkbook.Worksheets Wenn Source.Name = „Master“, dann ist MsgBox „Master Sheet bereits vorhanden“
Unterende beenden Wenn der Code „Weiter oben“ verwendet wird, um zu überprüfen, ob das Blatt „Master“ in der Arbeitsmappe vorhanden ist. Wenn in der Arbeitsmappe das Blatt „Master“ vorhanden ist, wird der Code beendet und eine Fehlermeldung angezeigt.
Source.Range („A1“). SpecialCells (xlLastCell) .Row Above Code wird verwendet, um die Zeilennummer der letzten Zelle im Blatt abzurufen.
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() 'Declaring variables Dim Source As Worksheet Dim Destination As Worksheet Dim SourceLastRow, DestLastRow As Long Application.ScreenUpdating = False 'Looping through all sheets to check whether "Master" sheet exist For Each Source In ThisWorkbook.Worksheets If Source.Name = "Master" Then MsgBox "Master sheet already exist" Exit Sub End If Next 'Inserting a new sheet after the "Main" sheet Set Destination = Worksheets.Add(after:=Sheets("Main")) Destination.Name = "Master" 'Looping through all the sheets in the workbook For Each Source In ThisWorkbook.Worksheets 'Preventing consolidation of data from "Main" and "Master" sheet 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 'copying data from the source sheet to destination sheet Source.Range("A1", 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 und Facebook.
Wir würden gerne von Ihnen hören, lassen Sie uns wissen, wie wir unsere Arbeit verbessern und für Sie verbessern können. Schreiben Sie uns unter [email protected]