Kopieren Sie eine Spalte oder Spalten aus jedem Blatt in ein Blatt mit VBA in Microsoft Excel

Anonim

Manchmal wird es zu einer Routinearbeit, Daten aus mehreren Blättern für dieselbe Spalte zu kopieren. Dieser Schritt kann durch Automatisierung vermieden werden. Wenn Sie ein konsolidiertes Blatt erstellen möchten, nachdem Sie Daten aus einer Spalte jedes einzelnen Blatts in ein Blatt kopiert haben, sollten Sie diesen Artikel lesen.

In diesem Artikel erstellen wir ein Makro, um Daten aus einer bestimmten Spalte zu kopieren und in ein neues Blatt einzufügen.

Rohdaten für dieses Beispiel sind Mitarbeiterdaten in Form einer Excel-Arbeitsmappe, die drei Blätter mit den Abteilungs-, Personen- und Kontaktdaten der Mitarbeiter enthält.

Um Daten aus verschiedenen Blättern in ein neues Blatt zu kopieren, haben wir ein Makro „CopyColumns“ erstellt. Dieses Makro kann durch Klicken auf die Schaltfläche "Makro ausführen" auf der Seite "Haupt" ausgeführt werden.

Das Makro „CopyColumns“ fügt ein neues Blatt mit dem Namen „Master“ nach dem Blatt „Main“ ein. Das „Master“-Blatt enthält konsolidierte Daten aus allen Blättern.

Codeerklärung

Worksheets.Add(after:=Worksheets("Main"))

Der obige Code wird verwendet, um neue Arbeitsblätter nach dem Arbeitsblatt „Main“ einzufügen.

Wenn Source.Name "Master" und Source.Name "Main" Then

Ende Wenn

Der obige Code wird verwendet, um das Kopieren von Daten aus dem „Master“- und „Main“-Blatt einzuschränken.

Source.UsedRange.Copy Destination.Columns(Last)

Der obige Code wird verwendet, um Daten vom Quellblatt in das Zielblatt zu kopieren.

Für jede Quelle in ThisWorkbook.Worksheets

Wenn Source.Name = "Master" Then

MsgBox "Stammblatt bereits vorhanden"

Abo beenden

Ende Wenn

Nächste

Der obige Code wird verwendet, um zu überprüfen, ob das Blatt "Master" bereits in der Arbeitsmappe vorhanden ist. Das Makro stoppt die Ausführung, wenn das Blatt "Master" bereits in der Arbeitsmappe vorhanden ist.

Bitte folgen Sie unten für den Code

 Option Explicit Sub CopyColumns() Dim Source As Worksheet Dim Destination As Worksheet Dim Last As Long Application.ScreenUpdating = False 'Überprüfen, ob das "Master"-Blatt bereits in der Arbeitsmappe für jede Quelle in ThisWorkbook.Worksheets vorhanden ist If Source.Name = "Master" Dann MsgBox "Masterblatt bereits vorhanden" Exit Sub End If Next 'Einfügen neuer Arbeitsblätter in die Arbeitsmappe Set Destination = Worksheets.Add(after:=Worksheets("Main")) 'Umbenennen des Arbeitsblatts Destination.Name = "Master" 'Looping durch die Arbeitsblätter in der Arbeitsmappe For Each Source In ThisWorkbook.Worksheets If Source.Name "Master" And Source.Name "Main" Then 'Suchen der letzten Spalte aus dem Zielblatt Last = Destination.Range("A1").SpecialCells( xlCellTypeLastCell).Column If Last = 1 Then 'Einfügen der Daten in das Zielblatt Source.UsedRange.Copy Destination.Columns(Last) Else Source.UsedRange.Copy Destination.Columns(Last + 1) End If End If Next Columns.AutoFit 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