Haben Sie große Datenmengen auf Excel-Arbeitsblättern und müssen diese Arbeitsblätter auf mehrere Arbeitsblätter verteilen, basierend auf einigen Daten in einer Spalte? Diese sehr grundlegende Aufgabe ist aber zeitaufwändig.

006

Zum Beispiel habe ich diese Daten. Diese Daten haben eine Spalte mit dem Namen Datum, Verfasser und Titel. Die Writer-Spalte enthält den Namen des Writers des jeweiligen Titels. Ich möchte die Daten jedes Autors in separaten Blättern abrufen.

007

Um dies manuell zu tun, muss ich Folgendes tun:

  1. Filtern Sie einen Namen. Kopieren Sie die gefilterten Daten. Fügen Sie ein Blatt hinzu. Fügen Sie die Daten ein. Benennen Sie das Blatt um. Wiederholen Sie alle obigen 5 Schritte für jeden.

In diesem Beispiel habe ich nur drei Namen. Stellen Sie sich vor, Sie hätten Hunderte von Namen.

Wie würden Sie Daten in verschiedene Blätter aufteilen? Es wird viel Zeit in Anspruch nehmen und Sie auch erschöpfen.

Führen Sie die folgenden Schritte aus, um den obigen Vorgang des Aufteilens von Blättern in mehrere Blätter zu automatisieren.

Drücken Sie Alt + F11. Dadurch wird der VB-Editor für Excel geöffnet. Ein neues Modul hinzufügen * Unter Code in Modul kopieren.

Sub SplitIntoSheets()

With Application

.ScreenUpdating = False

.DisplayAlerts = False

End With

ThisWorkbook.Activate

Sheet1.Activate

'clearing filter if any

On Error Resume Next

Sheet1.ShowAllData

On Error GoTo 0

Dim lsrClm As Long

Dim lstRow As Long

'counting last used row

lstRow = Cells(Rows.Count, 1).End(xlUp).Row

Dim uniques As Range

Dim clm As String, clmNo As Long

On Error GoTo handler

clm = Application.InputBox("From which column you want create files" & vbCrLf & "E.g. A,B,C,AB,ZA etc.")

clmNo = Range(clm & "1").Column

Set uniques = Range(clm & "2:" & clm & lstRow)

'Calling Remove Duplicates to Get Unique Names

Set uniques = RemoveDuplicates(uniques)

Call CreateSheets(uniques, clmNo)

With Application

.ScreenUpdating = True

.DisplayAlerts = True

.AlertBeforeOverwriting = True

.Calculation = xlCalculationAutomatic

End With

Sheet1.Activate

MsgBox "Well Done!"

Exit Sub

Data.ShowAllData

handler:

With Application

.ScreenUpdating = True

.DisplayAlerts = True

.AlertBeforeOverwriting = True

.Calculation = xlCalculationAutomatic

End With

End Sub

Function RemoveDuplicates(uniques As Range) As Range

ThisWorkbook.Activate

Sheets.Add

On Error Resume Next

ActiveSheet.Name = "uniques"

Sheets("uniques").Activate

On Error GoTo 0

uniques.Copy

Cells(2, 1).Activate

ActiveCell.PasteSpecial xlPasteValues

Range("A1").Value = "uniques"

Dim lstRow As Long

lstRow = Cells(Rows.Count, 1).End(xlUp).Row

Range("A2:A" & lstRow).Select

ActiveSheet.Range(Selection.Address).RemoveDuplicates Columns:=1, Header:=xlNo

lstRow = Cells(Rows.Count, 1).End(xlUp).Row

Set RemoveDuplicates = Range("A2:A" & lstRow)

End Function

Sub CreateSheets(uniques As Range, clmNo As Long)

Dim lstClm As Long

Dim lstRow As Long



For Each unique In uniques

Sheet1.Activate

lstRow = Cells(Rows.Count, 1).End(xlUp).Row

lstClm = Cells(1, Columns.Count).End(xlToLeft).Column

Dim dataSet As Range

Set dataSet = Range(Cells(1, 1), Cells(lstRow, lstClm))

dataSet.AutoFilter field:=clmNo, Criteria1:=unique.Value

lstRow = Cells(Rows.Count, 1).End(xlUp).Row

lstClm = Cells(1, Columns.Count).End(xlToLeft).Column

Debug.Print lstRow; lstClm

Set dataSet = Range(Cells(1, 1), Cells(lstRow, lstClm))

dataSet.Copy

Sheets.Add

ActiveSheet.Name = unique.Value2

ActiveCell.PasteSpecial xlPasteAll

Next unique

End Sub

Wenn Sie die Prozedur SplitIntoSheets () ausführen, wird das Blatt basierend auf der angegebenen Spalte in mehrere Blätter unterteilt. Sie können eine Schaltfläche auf dem Blatt hinzufügen und dieses Makro diesem zuweisen.

Wie es funktioniert

Der obige Code hat zwei Prozeduren und eine Funktion. Zwei Prozeduren sind SplitIntoSheets (), CreateSheets (eindeutig als Bereich, clmNo so lang) und eine Funktion ist RemoveDuplicates (eindeutig als Bereich) als Bereich. Die erste Prozedur ist SplitIntoSheets (). Dies ist das Hauptverfahren. Diese Prozedur legt die Variablen und RemoveDuplicates fest, um eindeutige Namen aus der angegebenen Spalte abzurufen, und übergibt diese Namen dann zum Erstellen von Arbeitsblättern an CreateSheets.

RemoveDuplicates verwendet ein Argument, nämlich den Bereich, der den Namen enthält.

Entfernt Duplikate von ihnen und gibt ein Bereichsobjekt zurück, das eindeutige Namen enthält.

Jetzt wird CreateSheets aufgerufen. Es braucht zwei Argumente. Erstens die eindeutigen Namen und zweitens die Spalten-Nr. von dem wir es fitler Daten werden. Jetzt nimmt CreateSheets jeden Namen von Unikaten und filtert die angegebene Spaltennummer nach jedem Namen. Kopiert die gefilterten Daten, fügt ein Blatt hinzu und fügt die Daten dort ein. Und Ihre Daten werden in Sekundenschnelle in verschiedene Blätter aufgeteilt.

Sie können die Datei hier herunterladen.

In Blätter teilen

So verwenden Sie die Datei:

  • Kopieren Sie Ihre Daten auf Sheet1. Stellen Sie sicher, dass es von A1 beginnt.

008

Klicken Sie auf die Schaltfläche In Blätter teilen * Geben Sie den Spaltenbuchstaben ein, von dem Sie teilen möchten. OK klicken.

009

  • Sie sehen eine solche Eingabeaufforderung. Ihr Blatt ist geteilt.

0011

0013

Ich hoffe, der Artikel über das Aufteilen von Daten in separate Blätter war für Sie hilfreich. Wenn Sie Zweifel an dieser oder einer anderen Funktion von Excel haben, können Sie diese gerne im Kommentarbereich unten erfragen.

Datei herunterladen: