Cookies helfen uns, unsere Dienstleistungen zu liefern. Durch die Nutzung unserer Dienste stimmen Sie der Verwendung von Cookies.
Tipp: Andere Sprachen sind Google-Übersetzungen. Sie können die English Version dieses Links.
Einloggen
x
or
x
x
Registrieren
x

or

Wie teilt man Daten in mehrere Arbeitsblätter basierend auf einer Spalte in Excel auf?

Angenommen, Sie haben ein Arbeitsblatt mit großen Datenzeilen, und jetzt müssen Sie die Daten in mehrere Arbeitsblätter auf der Basis der Daten aufteilen Name Spalte (siehe folgenden Screenshot), und die Namen werden nach dem Zufallsprinzip eingegeben. Vielleicht können Sie sie zuerst sortieren, kopieren und dann einzeln in andere neue Arbeitsblätter einfügen. Aber das wird Ihre Geduld brauchen, um wiederholt zu kopieren und einzufügen. Heute werde ich über einige schnelle Tricks sprechen, um diese Aufgabe zu lösen.

doc teilt Daten nach Spalten 1

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

Teilen Sie Daten in mehrere Arbeitsblätter basierend auf Spalte mit Kutools für Excel


Teilen Sie Daten in mehrere Arbeitsblätter basierend auf bestimmten Spalten- oder Zeilenzählwerten im Arbeitsblatt auf:

Wenn Sie ein großes Arbeitsblatt basierend auf bestimmten Spaltendaten oder Zeilenanzahl in mehrere Arbeitsblätter aufteilen möchten, müssen Sie Kutools for Excel's Daten teilen Feature kann Ihnen helfen, diese Aufgabe schnell und einfach zu lösen.

doc teilt Daten nach Spalten 6

Kutools for Excel: mit mehr als 200 praktischen Excel-Add-Ins, die Sie in 60-Tagen kostenlos ausprobieren können. Download und kostenlose Testversion Jetzt!


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


Wenn Sie die Daten schnell und automatisch basierend auf dem Spaltenwert aufteilen möchten, ist der folgende VBA-Code eine gute Wahl. Bitte mach folgendes:

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

2. Klicken Sie Einsatz > Modul, und fügen Sie den folgenden Code in das Modulfenster ein.

Sub Splitdatabycol()
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
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
Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = myarr(i) & ""
Else
Sheets(myarr(i) & "").Move after:=Worksheets(Worksheets.Count)
End If
xWSTRg.Range(title).Copy
Sheets(myarr(i) & "").Paste Destination:=Sheets(myarr(i) & "").Range("A1")
ws.Range("A" & (titlerow + xTRg.Rows.Count) & ":A" & lr).EntireRow.Copy Sheets(myarr(i) & "").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 Taste, um den Code auszuführen, und ein Eingabeaufforderungsfeld wird angezeigt, um Sie daran zu erinnern, dass Sie die Kopfzeile auswählen. Siehe Abbildung:

doc teilt Daten nach Spalten 7

4. Und dann klicke OK und wählen Sie im zweiten Eingabeaufforderungsfeld die Spaltendaten aus, die Sie aufteilen möchten, siehe Screenshot:

doc teilt Daten nach Spalten 8

5. Dann klick OKund alle Daten im aktiven Arbeitsblatt werden durch den Spaltenwert in mehrere Arbeitsblätter aufgeteilt. Und die Split-Arbeitsblätter werden mit den Split-Zellnamen benannt. Siehe Screenshot:

doc teilt Daten nach Spalten 2

Note: Die geteilten Arbeitsblätter werden am Ende der Arbeitsmappe platziert, in der sich das Arbeitsblatt befindet.


Teilen Sie Daten in mehrere Arbeitsblätter basierend auf Spalte mit Kutools für Excel

Als Excel-Anfänger ist dieser lange VBA-Code etwas schwierig für uns, und die meisten von uns wissen nicht einmal, wie wir den Code so ändern können, wie wir es brauchen.

Hier stelle ich Ihnen ein multifunktionales Werkzeug vor--Kutools for Excel, seine Daten teilen Dienstprogramm kann nicht nur Ihnen helfen, Daten in mehrere Arbeitsblätter basierend auf Spalte aufzuteilen, sondern kann Daten auch nach Zeilenanzahl aufteilen.

Kutools for Excel : mit mehr als 300 praktischen Excel-Add-Ins, die Sie in 60-Tagen kostenlos ausprobieren können.

Wenn Sie installiert haben Kutools for Excel, mach bitte wie folgt:

1. Wählen Sie den Datenbereich aus, den Sie teilen möchten.

2. Klicken Sie Kutools Plus > Arbeitsblatt > Daten teilen, siehe Screenshot:

doc teilt Daten nach Spalten 3

3. In dem Teilen Sie Daten in mehrere Arbeitsblätter Dialogfeld müssen Sie:

1). Wählen Spezifische Spalte Option in der Teilen basierend auf Abschnitt, und wählen Sie den Spaltenwert, auf den Sie die Daten basierend auf in der Dropdown-Liste teilen möchten. (Wenn Ihre Daten über Kopfzeilen verfügen und Sie sie in jedes neue Arbeitsblatt einfügen möchten, überprüfen Sie dies bitte Meine Daten haben Kopfzeilen Möglichkeit.)

2). Dann können Sie die geteilten Arbeitsblattnamen unter dem Namen angeben Neuer Arbeitsblattname Abschnitt, geben Sie die Regeln für die Arbeitsblattnamen aus der Regeln Dropdown-Liste, können Sie die hinzufügen Vorsilbe or Suffix für die Blattnamen auch.

3). Drücke den OK Taste. Siehe Screenshot:

doc teilt Daten nach Spalten 4

4. Jetzt sind die Daten in mehrere Arbeitsblätter in einer neuen Arbeitsmappe aufgeteilt.

doc teilt Daten nach Spalten 5

Klicken Sie auf Kutools für Excel herunterladen und kostenlose Testversion Jetzt!


Teilen Sie Daten in mehrere Arbeitsblätter basierend auf Spalte mit Kutools für Excel

Kutools for Excel enthält mehr als 300 praktische Excel-Tools. Kostenlos zu testen, ohne Einschränkung in 60 Tagen. Laden Sie jetzt die kostenlose Testversion herunter!


In Verbindung stehender Artikel:

Wie teilt man Daten in mehrere Arbeitsblätter nach Zeilen auf?



Empfohlene Produktivitätswerkzeuge

Office Tab

Goldstern1 Bringen Sie praktische Tabs zu Excel und anderer Office-Software, genau wie Chrome, Firefox und den neuen Internet Explorer.

Kutools for Excel

Goldstern1 Tolle! Steigern Sie Ihre Produktivität in 5 Minuten. Brauche keine besonderen Fähigkeiten, spare zwei Stunden pro Tag!

Goldstern1 300 Neue Funktionen für Excel, machen Excel viel einfacher und leistungsfähiger:

  • Zelle / Zeilen / Spalten zusammenführen, ohne Daten zu verlieren.
  • Kombinieren und konsolidieren Sie mehrere Arbeitsblätter und Arbeitsmappen.
  • Bereiche vergleichen, Mehrere Bereiche kopieren, Text in Datum umwandeln, Einheit und Währungsumrechnung.
  • Zählen nach Farben, Paging-Zwischensummen, Erweiterte Sortierung und Super-Filter,
  • Mehr Auswählen / Einfügen / Löschen / Text / Formatieren / Verknüpfen / Kommentieren / Arbeitsmappen / Arbeitsblätter Werkzeuge ...

Screenshot von Kutools für Excel

Say something here...
symbols left.
You are guest ( Sign Up? )
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    Rudi Miller · 4 days ago
    Sub parse_data()
    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
    vcol = 1
    Set ws = Sheets("Sheet1")
    lr = ws.Cells(ws.Rows.Count, vcol).End(xlUp).Row
    title = "A1:C1"
    titlerow = ws.Range(title).Cells(1).Row
    icol = ws.Columns.Count
    ws.Cells(1, icol) = "Unique"
    For i = 2 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
    Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = myarr(i) & ""
    Else
    Sheets(myarr(i) & "").Move after:=Worksheets(Worksheets.Count)
    End If
    ws.Range("A" & titlerow & ":A" & lr).EntireRow.Copy Sheets(myarr(i) & "").Range("A1")
    Sheets(myarr(i) & "").Columns.AutoFit
    Next
    ws.AutoFilterMode = False
    ws.Activate
    End Sub
  • To post as a guest, your comment is unpublished.
    Jason · 1 months ago
    This formula is great, works perfectly for me.
    I want to split out data based on a location, which is in column 1. Which this does.
    However, is it possible to also split out based on column 2, for example. Built and Not Built. So a secondary condition also?
  • To post as a guest, your comment is unpublished.
    jose · 1 months ago
    can someone help please im using this but i keep getting to many columns. i have to keep deleting rows every time i use this.

    This is what im using


    Sub parse_data()
    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
    vcol = 1
    Set ws = Sheets("sheet1")
    lr = ws.Cells(ws.Rows.Count, vcol).End(xlUp).Row
    title = "A1:AN1"
    titlerow = ws.Range(title).Cells(1).Row
    icol = ws.Columns.Count
    ws.Cells(1, icol) = "Unique"
    For i = 2 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
    Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = myarr(i) & ""
    Else
    Sheets(myarr(i) & "").Move after:=Worksheets(Worksheets.Count)
    End If
    ws.Range("A" & titlerow & ":A" & lr).EntireRow.Copy Sheets(myarr(i) & "").Range("A1")
    Sheets(myarr(i) & "").Columns.AutoFit
    Next
    ws.AutoFilterMode = False
    ws.Activate
    End Sub
  • To post as a guest, your comment is unpublished.
    avinash · 1 months ago
    Thanks for VBA, it works great. In addition to that question, I have column which is dependent. So when i select some value my column values get changed hence I need vba solution to replace earlier split worksheet to replace with new value of columns. Can anyone help me out.?

    Thanks in advance
  • To post as a guest, your comment is unpublished.
    JP Tontegode · 1 months ago
    Is there a way to have the macro create a separate spreadsheet for each new tab instead of just adding a tab into the current worksheet? Thanks!