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.

ArrowRawData

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.

ArrowMain

Das Makro erstellt ein neues Arbeitsblatt und fügt die konsolidierten Daten aus allen Arbeitsblättern ein.

ArrowOutput

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]