Direkt zum Inhalt

Excel-Tipps: Teilen Sie Daten basierend auf dem Spaltenwert in mehrere Arbeitsblätter/Arbeitsmappen auf

Bei der Verwaltung großer Datensätze in Excel kann es von großem Vorteil sein, Daten basierend auf bestimmten Spaltenwerten in mehrere Arbeitsblätter aufzuteilen. Diese Methode verbessert nicht nur die Organisation der Daten, sondern verbessert auch die Lesbarkeit und erleichtert die Datenanalyse.

Angenommen, Sie verfügen über einen umfangreichen Verkaufsdatensatz mit mehreren Einträgen, beispielsweise dem Produktnamen und der verkauften Menge des ersten Quartals. Das Ziel besteht darin, diese Daten basierend auf jedem Produktnamen in separate Arbeitsblätter aufzuteilen, sodass die individuelle Verkaufsleistung separat analysiert werden kann.

Teilen Sie Daten basierend auf dem Spaltenwert in mehrere Arbeitsblätter auf

Teilen Sie Daten mit VBA-Code basierend auf dem Spaltenwert in mehrere Arbeitsmappen auf


Teilen Sie Daten basierend auf dem Spaltenwert in mehrere Arbeitsblätter auf

Normalerweise können Sie die Datenliste zuerst sortieren und sie dann einzeln kopieren und in andere neue Arbeitsblätter einfügen. Das wiederholte Kopieren und Einfügen erfordert jedoch Geduld. In diesem Abschnitt stellen wir zwei unkomplizierte Methoden vor, mit denen Sie diese Aufgabe in Excel effizient bewältigen können, wodurch Sie Zeit sparen und das Fehlerpotenzial verringern.

Teilen Sie Daten mit VBA-Code basierend auf dem Spaltenwert in mehrere Arbeitsblätter auf

1. Halten Sie die Taste gedrückt ALT + F11 Schlüssel zum Öffnen der Microsoft Visual Basic für Applikationen Fenster.

2 Klicken Insert > Modulund fügen Sie den folgenden Code in das Modulfenster ein.

Sub Splitdatabycol()
'updateby Extendoffice
Dim lr As Long
Dim ws As Worksheet
Dim vcol, i As Integer
Dim icol As Long
Dim myarr As Variant
Dim title As String
Dim titlerow As Integer
Dim xTRg As Range
Dim xVRg As Range
Dim xWSTRg As Worksheet
Dim xWS As Worksheet
On Error Resume Next
Set xTRg = Application.InputBox("Please select the header rows:", "Kutools for Excel", "", Type:=8)
If TypeName(xTRg) = "Nothing" Then Exit Sub
Set xVRg = Application.InputBox("Please select the column you want to split data based on:", "Kutools for Excel", "", Type:=8)
If TypeName(xVRg) = "Nothing" Then Exit Sub
vcol = xVRg.Column
Set ws = xTRg.Worksheet
lr = ws.Cells(ws.Rows.Count, vcol).End(xlUp).Row
title = xTRg.AddressLocal
titlerow = xTRg.Cells(1).Row
icol = ws.Columns.Count
ws.Cells(1, icol) = "Unique"
Application.DisplayAlerts = False
If Not Evaluate("=ISREF('xTRgWs_Sheet!A1')") Then
Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = "xTRgWs_Sheet"
Else
Sheets("xTRgWs_Sheet").Delete
Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = "xTRgWs_Sheet"
End If
Set xWSTRg = Sheets("xTRgWs_Sheet")
xTRg.Copy
xWSTRg.Paste Destination:=xWSTRg.Range("A1")
ws.Activate
For i = (titlerow + xTRg.Rows.Count) To lr
On Error Resume Next
If ws.Cells(i, vcol) <> "" And Application.WorksheetFunction.Match(ws.Cells(i, vcol), ws.Columns(icol), 0) = 0 Then
ws.Cells(ws.Rows.Count, icol).End(xlUp).Offset(1) = ws.Cells(i, vcol)
End If
Next
myarr = Application.WorksheetFunction.Transpose(ws.Columns(icol).SpecialCells(xlCellTypeConstants))
ws.Columns(icol).Clear
For i = 2 To UBound(myarr)
ws.Range(title).AutoFilter field:=vcol, Criteria1:=myarr(i) & ""
If Not Evaluate("=ISREF('" & myarr(i) & "'!A1)") Then
Set xWS = Sheets.Add(after:=Worksheets(Worksheets.Count))
xWS.Name = myarr(i) & ""
Else
xWS.Move after:=Worksheets(Worksheets.Count)
End If
xWSTRg.Range(title).Copy
xWS.Paste Destination:=xWS.Range("A1")
ws.Range("A" & (titlerow + xTRg.Rows.Count) & ":A" & lr).EntireRow.Copy xWS.Range("A" & (titlerow + xTRg.Rows.Count))
Sheets(myarr(i) & "").Columns.AutoFit
Next
xWSTRg.Delete
ws.AutoFilterMode = False
ws.Activate
Application.DisplayAlerts = True
End Sub

3. Dann drücken F5 Drücken Sie die Taste, um den Code auszuführen. Es erscheint ein Eingabeaufforderungsfeld, das Sie daran erinnert, die Kopfzeile auszuwählen und dann zu klicken OK. Siehe Screenshot:

4. Wählen Sie im zweiten Eingabeaufforderungsfeld bitte die Spaltendaten aus, auf deren Grundlage Sie die Aufteilung vornehmen möchten, und klicken Sie dann auf OK. Siehe Screenshot:

5. Alle Daten im aktiven Arbeitsblatt werden basierend auf den Spaltenwerten in mehrere Arbeitsblätter aufgeteilt. Die resultierenden Arbeitsblätter werden entsprechend den Werten in den geteilten Zellen benannt und am Ende der Arbeitsmappe platziert. Siehe Screenshot:

 

Teilen Sie Daten mit Kutools for Excel basierend auf dem Spaltenwert in mehrere Arbeitsblätter auf

Kutools for Excel bringt intelligente Funktion – Daten teilen direkt in Ihre Excel-Umgebung. Das Aufteilen von Daten in mehrere Arbeitsblätter ist keine Herausforderung mehr. Unser intuitives Tool unterteilt Ihren Datensatz automatisch basierend auf dem ausgewählten Spaltenwert oder der Anzahl der Zeilen und stellt so sicher, dass jede Information genau dort ist, wo Sie sie benötigen. Verabschieden Sie sich von der mühsamen Aufgabe, Ihre Tabellenkalkulationen manuell zu organisieren und nutzen Sie eine schnellere, fehlerfreie Möglichkeit, Ihre Daten zu verwalten.

Note: Um dies anzuwenden Daten teilenZunächst sollten Sie die herunterladen Kutools for Excelund wenden Sie die Funktion dann schnell und einfach an.

Nach der Installation Kutools for Excel, wählen Sie den Datenbereich aus und klicken Sie dann Kutoolen Plus > Daten teilen öffnen Teilen Sie Daten in mehrere Arbeitsblätter auf Dialogbox.

  1. Auswählen Spezifische Spalte Option in der Aufteilen basierend auf Abschnitt und wählen Sie aus der Dropdown-Liste den Spaltenwert aus, auf dessen Grundlage Sie die Daten aufteilen möchten.
  2. Wenn Ihre Daten Überschriften haben und Sie diese in jedes neue geteilte Arbeitsblatt einfügen möchten, überprüfen Sie dies bitte Meine Daten haben Kopfzeilen Möglichkeit. (Sie können die Anzahl der Kopfzeilen basierend auf Ihren Daten angeben. Wenn Ihre Daten beispielsweise zwei Kopfzeilen enthalten, geben Sie bitte 2 ein.)
  3. Anschließend können Sie die geteilten Arbeitsblattnamen unter dem angeben Neuer Name der Arbeitsblätter Geben Sie im Abschnitt „Arbeitsblattnamen“ die Regel „Arbeitsblattnamen“ aus der Dropdown-Liste „Regeln“ an. Sie können die hinzufügen Vorsilbe or Suffix auch für die Blattnamen.
  4. Klicken Sie auf die OK Taste. Siehe Screenshot:

Jetzt werden die Daten im Arbeitsblatt in einer neuen Arbeitsmappe auf mehrere Arbeitsblätter aufgeteilt.


Teilen Sie Daten mit VBA-Code basierend auf dem Spaltenwert in mehrere Arbeitsmappen auf

Anstatt Daten in mehrere Arbeitsblätter aufzuteilen, kann es manchmal vorteilhafter sein, die Daten basierend auf einer Schlüsselspalte in separate Arbeitsmappen aufzuteilen. Hier finden Sie eine Schritt-für-Schritt-Anleitung zur Verwendung von VBA-Code zur Automatisierung des Prozesses der Aufteilung von Daten in mehrere Arbeitsmappen basierend auf einem bestimmten Spaltenwert.

1. Halten Sie die Taste gedrückt ALT + F11 Schlüssel zum Öffnen der Microsoft Visual Basic für Applikationen Fenster.

2 Klicken Insert > Modulund fügen Sie den folgenden Code in das Feld ein Modulfenster.

Sub SplitDataByColToWorkbooks()
    ' Updateby Extendoffice
    Dim lr As Long
    Dim ws As Worksheet
    Dim vcol, i As Integer
    Dim myarr As Variant
    Dim title As String
    Dim titlerow As Integer
    Dim xTRg As Range
    Dim xVRg As Range
    Dim xWS As Workbook
    Dim savePath As String
    ' Set the directory to save new workbooks
    savePath = "C:\Users\AddinsVM001\Desktop\multiple files\" ' Modify this path as needed
    Application.DisplayAlerts = False
    Set xTRg = Application.InputBox("Please select the header rows:", "Kutools for Excel", Type:=8)
    If TypeName(xTRg) = "Nothing" Then Exit Sub
    Set xVRg = Application.InputBox("Please select the column you want to split data based on:", "Kutools for Excel", Type:=8)
    If TypeName(xVRg) = "Nothing" Then Exit Sub
    vcol = xVRg.Column
    Set ws = xTRg.Worksheet
    lr = ws.Cells(ws.Rows.Count, vcol).End(xlUp).Row
    title = xTRg.Address(False, False)
    titlerow = xTRg.Row
    ws.Columns(vcol).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=ws.Cells(1, ws.Columns.Count), Unique:=True
    myarr = Application.Transpose(ws.Cells(1, ws.Columns.Count).Resize(ws.Cells(ws.Rows.Count, ws.Columns.Count).End(xlUp).Row).Value)
    ws.Cells(1, ws.Columns.Count).Resize(ws.Cells(ws.Rows.Count, ws.Columns.Count).End(xlUp).Row).ClearContents
    For i = 2 To UBound(myarr)
        Set xWS = Workbooks.Add
        ws.Range(title).AutoFilter Field:=vcol, Criteria1:=myarr(i)
        ws.Range("A" & titlerow & ":A" & lr).SpecialCells(xlCellTypeVisible).EntireRow.Copy
        xWS.Sheets(1).Cells(1, 1).PasteSpecial Paste:=xlPasteAll
        xWS.SaveAs Filename:=savePath & myarr(i) & ".xlsx"

        xWS.Close SaveChanges:=False
    Next i
    ws.AutoFilterMode = False
    Application.DisplayAlerts = True
    ws.Activate
End Sub
Note: Im obigen Code sollten Sie den Dateipfad in Ihren eigenen ändern, wo die geteilten Arbeitsmappen in diesem Skript gespeichert werden: savePath = "C:\Benutzer\AddinsVM001\Desktop\multiple files\".

3. Dann drücken F5 Drücken Sie die Taste, um den Code auszuführen. Es erscheint ein Eingabeaufforderungsfeld, das Sie daran erinnert, die Kopfzeile auszuwählen und dann zu klicken OK. Siehe Screenshot:

4. Wählen Sie im zweiten Eingabeaufforderungsfeld bitte die Spaltendaten aus, auf deren Grundlage Sie die Aufteilung vornehmen möchten, und klicken Sie dann auf OK. Siehe Screenshot:

5. Nach der Aufteilung werden alle Daten im aktiven Arbeitsblatt basierend auf den Spaltenwerten in mehrere Arbeitsmappen aufgeteilt. Alle geteilten Arbeitsmappen werden in dem von Ihnen angegebenen Ordner gespeichert. Siehe Screenshot:

Weitere Artikel:

  • Teilen Sie Daten nach Zeilenanzahl in mehrere Arbeitsblätter auf
  • Durch die effiziente Aufteilung eines großen Datenbereichs in mehrere Excel-Arbeitsblätter basierend auf einer bestimmten Zeilenanzahl kann die Datenverwaltung optimiert werden. Wenn Sie beispielsweise einen Datensatz alle fünf Zeilen in mehrere Blätter aufteilen, können Sie ihn besser verwalten und organisieren. Dieser Leitfaden bietet zwei praktische Methoden, um diese Aufgabe schnell und einfach zu erledigen.
  • Führen Sie zwei oder mehr Tabellen basierend auf Schlüsselspalten zu einer zusammen
  • Angenommen, Sie haben drei Tabellen in einer Arbeitsmappe. Jetzt möchten Sie diese Tabellen basierend auf den entsprechenden Schlüsselspalten zu einer Tabelle zusammenführen, um das Ergebnis wie im folgenden Screenshot zu erhalten. Dies mag für die meisten von uns eine mühsame Aufgabe sein, aber bitte machen Sie sich keine Sorgen, in diesem Artikel werde ich einige Methoden zur Lösung dieses Problems vorstellen.
  • Teilen Sie Textzeichenfolgen durch Trennzeichen in mehrere Zeilen auf
  • Normalerweise können Sie die Funktion „Text in Spalte“ verwenden, um Zellinhalte durch ein bestimmtes Trennzeichen wie Komma, Punkt, Semikolon, Schrägstrich usw. in mehrere Spalten aufzuteilen. Aber manchmal müssen Sie den Inhalt der durch Trennzeichen getrennten Zellen in mehrere Zeilen aufteilen und wiederholen Sie die Daten aus anderen Spalten, wie im folgenden Screenshot gezeigt. Haben Sie gute Möglichkeiten, diese Aufgabe in Excel zu erledigen? Dieses Tutorial stellt einige effektive Methoden vor, um diesen Job in Excel abzuschließen.
  • Teilen Sie mehrzeilige Zellinhalte in getrennte Zeilen/Spalten auf
  • Angenommen, Sie haben einen mehrzeiligen Zelleninhalt, der durch Alt + Enter getrennt ist, und jetzt müssen Sie den mehrzeiligen Inhalt in getrennte Zeilen oder Spalten aufteilen, was können Sie tun? In diesem Artikel erfahren Sie, wie Sie mehrzeilige Zelleninhalte schnell in getrennte Zeilen oder Spalten aufteilen.

Beste Office-Produktivitätstools

🤖 Kutools KI-Assistent: Revolutionieren Sie die Datenanalyse basierend auf: Intelligente Ausführung   |  Code generieren  |  Erstellen Sie benutzerdefinierte Formeln  |  Analysieren Sie Daten und erstellen Sie Diagramme  |  Rufen Sie Kutools-Funktionen auf...
Beliebte Funktionen: Suchen, markieren oder identifizieren Sie Duplikate   |  Leere Zeilen löschen   |  Kombinieren Sie Spalten oder Zellen, ohne Daten zu verlieren   |   Runde ohne Formel ...
Super-Lookup: VLookup mit mehreren Kriterien    VLookup mit mehreren Werten  |   VLookup über mehrere Blätter hinweg   |   Unscharfe Suche ....
Erweiterte Dropdown-Liste: Erstellen Sie schnell eine Dropdown-Liste   |  Abhängige Dropdown-Liste   |  Mehrfachauswahl Dropdown-Liste ....
Spaltenmanager: Fügen Sie eine bestimmte Anzahl von Spalten hinzu  |  Spalten verschieben  |  Schalten Sie den Sichtbarkeitsstatus ausgeblendeter Spalten um  |  Vergleichen Sie Bereiche und Spalten ...
Ausgewählte Funktionen: Rasterfokus   |  Designansicht   |   Große Formelleiste    Arbeitsmappen- und Blattmanager   |  Ressourcen (Autotext)   |  Datumsauswahl   |  Arbeitsblätter kombinieren   |  Zellen verschlüsseln/entschlüsseln    Senden Sie E-Mails nach Liste   |  Superfilter   |   Spezialfilter (Filter fett/kursiv/durchgestrichen...) ...
Top 15 Toolsets12 Text Tools (Text hinzufügen, Zeichen entfernen, ...)   |   50+ Chart Typen (Gantt-Diagramm, ...)   |   40+ Praktisch Formeln (Berechnen Sie das Alter basierend auf dem Geburtstag, ...)   |   19 Einfügen Tools (QR-Code einfügen, Bild aus Pfad einfügen, ...)   |   12 Umwandlung (Conversion) Tools (Zahlen zu Wörtern, Currency Conversion, ...)   |   7 Zusammenführen & Teilen Tools (Erweiterte Zeilen kombinieren, Zellen teilen, ...)   |   ... und mehr

Verbessern Sie Ihre Excel-Kenntnisse mit Kutools für Excel und erleben Sie Effizienz wie nie zuvor. Kutools für Excel bietet über 300 erweiterte Funktionen, um die Produktivität zu steigern und Zeit zu sparen.  Klicken Sie hier, um die Funktion zu erhalten, die Sie am meisten benötigen ...

Beschreibung


Office Tab Bringt die Oberfläche mit Registerkarten in Office und erleichtert Ihnen die Arbeit erheblich

  • Aktivieren Sie das Bearbeiten und Lesen von Registerkarten in Word, Excel und PowerPoint, Publisher, Access, Visio und Project.
  • Öffnen und erstellen Sie mehrere Dokumente in neuen Registerkarten desselben Fensters und nicht in neuen Fenstern.
  • Steigert Ihre Produktivität um 50 % und reduziert jeden Tag Hunderte von Mausklicks für Sie!
Comments (312)
Rated 5 out of 5 · 2 ratings
This comment was minimized by the moderator on the site
Sub SplitDataByColWorkbook()
Dim lr As Long
Dim ws As Worksheet
Dim vcol As Integer
Dim icol As Long
Dim myarr As Variant
Dim title As String
Dim titlerow As Integer
Dim xTRg As Range
Dim xVRg As Range
Dim xWSTRg As Worksheet
Dim xWS As Workbook
Dim wb As Workbook


Set wb = ThisWorkbook
Set ws = wb.Sheets(1) ' Assuming you want to work with the first sheet in the workbook

On Error Resume Next
Set xTRg = Application.InputBox("Please select the header rows:", "Select Header Rows", Type:=8)
If xTRg Is Nothing Then Exit Sub

On Error Resume Next
Set xVRg = Application.InputBox("Please select the column you want to split data based on:", "Select Split Column", Type:=8)
If xVRg Is Nothing Then Exit Sub

vcol = xVRg.Column
lr = ws.Cells(ws.Rows.Count, vcol).End(xlUp).Row
title = xTRg.AddressLocal
titlerow = xTRg.Cells(1).Row
icol = ws.Columns.Count
ws.Cells(1, icol) = "Unique"

Application.DisplayAlerts = False
If Not Evaluate("=ISREF('xTRgWs_Sheet'!A1)") Then
Set xWS = Workbooks.Add
Else
Set xWS = Workbooks.Add
End If

Set xWSTRg = xWS.Sheets(1)
xTRg.Copy
xWSTRg.Range("A1").PasteSpecial Paste:=xlPasteValues
ws.Activate

For i = (titlerow + xTRg.Rows.Count) To lr
On Error Resume Next
If ws.Cells(i, vcol) <> "" And Application.WorksheetFunction.Match(ws.Cells(i, vcol), ws.Columns(icol), 0) = 0 Then
ws.Cells(ws.Rows.Count, icol).End(xlUp).Offset(1) = ws.Cells(i, vcol)
End If
Next

myarr = Application.WorksheetFunction.Transpose(ws.Columns(icol).SpecialCells(xlCellTypeConstants))
ws.Columns(icol).Clear

For i = 2 To UBound(myarr)
ws.Range(title).AutoFilter field:=vcol, Criteria1:=myarr(i) & ""
Set xWS = Workbooks.Add
Set xWSTRg = xWS.Sheets(1)
xTRg.Copy
xWSTRg.Range("A1").PasteSpecial Paste:=xlPasteValues
ws.Range("A" & (titlerow + xTRg.Rows.Count) & ":A" & lr).EntireRow.Copy xWSTRg.Range("A" & (titlerow + xTRg.Rows.Count))
xWSTRg.Columns.AutoFit
xWS.SaveAs myarr(i) & ".xlsx" ' Change the file name as needed
xWS.Close SaveChanges:=False
Next

ws.AutoFilterMode = False
wb.Activate
Application.DisplayAlerts = True
End Sub
This comment was minimized by the moderator on the site
First of all, thank you for the macro.

I would like to ask if there is any way to maintain the column widths. My 'original' tab was completely formatted. However, after running the macro, it loses the column formatting and appears quite messy.

English is not my first language (sorry).

Thank you again!
Rated 5 out of 5
This comment was minimized by the moderator on the site
The original header is not copied in the split sheet.
This comment was minimized by the moderator on the site
This works wonderfully, thank you very much!!! Huge time-saver.
Rated 5 out of 5
This comment was minimized by the moderator on the site
Hello,

I am having a hard time getting this code to work. When I run it, it just creates a duplicate sheet and does not split columns into multiple sheets.

I do have values that exceed 31 characters as well as special characters such as "-" and "()" in my column, how can I account for that without a lot of manual changes?
This comment was minimized by the moderator on the site
This worked great!!! One question... my formulas didn't transfer to each sheet correctly. What do I need to do differently to transfer the formulas?
Thank you!!!!!
This comment was minimized by the moderator on the site
Nice code, but it just copied everything to the new tables, named correctly though. So, the data filtering did not work at all, just copy paste.
This comment was minimized by the moderator on the site
When I run this using a small amount of data like the example it works. I'm trying to use this on a database with 400k + rows of data. When I run the macro, a second tab is created with just the header row and no data.
This comment was minimized by the moderator on the site
Hello, Ryan,

As you mentioned, the code works well for small data ranges, if there are lots of data, the code will not work properly.
In such situations, I recommend using the "Split Data" feature offered by Kutools for Excel. This powerful feature can greatly assist you in managing large amounts of data. To take advantage of this feature, you can download and install Kutools for Excel, which is available for a 30-day free trial.

Please have a try, thank you!
This comment was minimized by the moderator on the site
I've come across many solutions in VBA message boards for parsing data into worksheets or columns based upon filtering a particular column, but they all require a bit of tinkering and customization. What makes this so brilliant is that it is dynamic, user-friendly even for beginners (which gives it shareable utility), and copy/paste ready.

You rock.
This comment was minimized by the moderator on the site
Hi, Dane,
Thanks for your comment, glad this can help you! Have a good day!
This comment was minimized by the moderator on the site
When I try to split data from a different sheet, it copies and pastes the entire sheet into one sheet instead of multiple sheets. Could this be because the naming convention of the sheet I'm trying to split is similar to another sheet?
This comment was minimized by the moderator on the site
Hello, Giancarlo,

If the data in the column is same with a sheet name in the workbook, the sheet with the same name will be kept, other data will be split into separate sheet.
Thanks for your comment.
There are no comments posted here yet
Load More
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations