Cookies hjælper os med at levere vores tjenester. Ved at bruge vores tjenester accepterer du vores brug af cookies.
Tip: Andre sprog er Google-oversat. Du kan besøge English version af dette link.
Log på
x
or
x
x
Tilmeld
x

or

Hvordan opdeles data i flere regneark baseret på kolonne i Excel?

Hvis du antager, at du har et regneark med store rækker af data, og nu skal du opdele dataene i flere regneark baseret på Navn kolonne (se følgende skærmbillede), og navnene indtastes tilfældigt. Måske kan du sortere dem først, og derefter kopiere og indsætte dem en efter en i andre nye regneark. Men det vil have din tålmodighed at kopiere og indsætte gentagne gange. I dag vil jeg snakke om nogle hurtige tricks til at løse denne opgave.

doc split data ved kolonner 1

Opdel data i flere regneark baseret på kolonne med VBA kode

Opdel data i flere regneark baseret på kolonne med Kutools for Excel


Opdel data i flere regneark baseret på specifikke kolonner eller rækker tæller i regneark:

Hvis du vil opdele et stort regneark i flere ark baseret på specifikke kolonnedata eller rækker, tæller Kutools til Excel's Split data Funktionen kan hjælpe dig med at løse denne opgave hurtigt og nemt.

doc split data ved kolonner 6

Kutools til Excel: Med mere end 200 handy Excel-tilføjelser, kan du prøve uden begrænsning i 60 dage. Download og gratis prøveversion nu!


Opdel data i flere regneark baseret på kolonne med VBA kode


Hvis du vil dele dataene baseret på kolonneværdi hurtigt og automatisk, er følgende VBA-kode et godt valg. Venligst gør som dette:

1. Hold nede i ALT + F11 nøgler til at åbne Microsoft Visual Basic til applikationer vindue.

2. Klik indsatte > Moduler, og indsæt følgende kode i modulvinduet.

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("Master sheet")        
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

Noter: I ovenstående kode:

  • vcol = 1 , nummeret 1 er det kolonne nummer, du vil dele data baseret på.
  • Indstil ws = Ark ("Master sheet"), Master ark er det arknavn, du vil anvende denne kode.
  • title = "A1: C1" , A1: C1 er rækkevidden af ​​titlen.

Alle er variabler, du kan ændre dem som dit behov.

3. Tryk derefter på F5 nøglen til at køre koden, er alle data i det aktive regneark opdelt i flere regneark ved hjælp af kolonneværdien. Og de delte regneark er navngivet med delt celle navne. Se skærmbillede:

doc split data ved kolonner 2

Noter: De delte regneark er placeret i slutningen af ​​projektmappen, hvor masterarket er i.


Opdel data i flere regneark baseret på kolonne med Kutools for Excel

Som en Excel-begynder er denne lange VBA-kode noget vanskelig for os, og de fleste af os ved endda ikke, hvordan man ændrer koden som vores behov.

Her vil jeg introducere dig et multifunktionelt værktøj -Kutools til Excel, dens Split data hjælpeprogram kan ikke kun hjælpe dig med at opdele data i flere regneark baseret på kolonne, men kan også dele data ved rækker tæller.

Kutools til Excel : med mere end 300 handy Excel-tilføjelser, gratis at prøve uden begrænsning i 60 dage.

Hvis du har installeret Kutools til Excel, gør venligst som følger:

1. Vælg det udvalg af data, du vil dele.

2. Klik Kutools Plus > Arbejdsark > Split data, se skærmbillede:

doc split data ved kolonner 3

3. I Opdele data i flere regneark dialogboksen, skal du:

1). Vælg Specifikke kolonne valgmulighed i Split baseret på sektion, og vælg kolonneværdien, som du vil dele dataene baseret på i rullelisten. (Hvis dine data har overskrifter, og du vil indsætte dem i hvert nyt delt regneark, skal du kontrollere Mine data har overskrifter mulighed.)

2). Derefter kan du angive delte regnearknavne under Nyt regnearknavn sektion, angiv regnearkets regler fra Regler drop down liste, kan du tilføje Præfiks or Suffiks for arknavne også.

3). Klik på knappen OK knap. Se skærmbillede:

doc split data ved kolonner 4

4. Nu er dataene opdelt i flere regneark i en ny arbejdsbog.

doc split data ved kolonner 5

Klik for at downloade Kutools til Excel og gratis prøveversion nu!


Opdel data i flere regneark baseret på kolonne med Kutools for Excel

Kutools til Excel indeholder mere end 300 handy Excel værktøjer. Gratis at prøve uden begrænsning i 60 dage. Download den gratis prøveversion nu!


Relateret artikel:

Hvordan opdeles data i flere regneark ved rækker tæller?



Anbefalede produktivitetsværktøjer

Office-fanen

guld star1 Medbring praktiske faner til Excel og andre Office-software, ligesom Chrome, Firefox og nye Internet Explorer.

Kutools til Excel

guld star1 Fantastiske! Forøg din produktivitet i 5 minutter. Har ikke brug for særlige færdigheder, spar to timer hver dag!

guld star1 300 Nye funktioner til Excel, gør Excel meget nemt og kraftfuldt:

  • Fusionere celler / rækker / kolonner uden at miste data.
  • Kombiner og konsolidér flere ark og arbejdsbøger.
  • Sammenlign ranges, kopier flere rækker, konverter tekst til dato, enheds- og valutaomregning.
  • Tæl efter farver, Personsøgning Subtotaler, Avanceret Sort og Super Filter,
  • Mere Vælg / Indsæt / Slet / Tekst / Format / Link / Kommentar / Arbejdsbøger / Regneark Værktøjer ...

Skærmbillede af Kutools til 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.
    Jenny Singleton · 2 months ago
    Hi, This VBA worked great on my first attempt. However, when repeating the process with a new set of data, the sheets are splitting into Product names, but the data in each sheet still shows all data. I can't understand why it worked first time though. Can anyone help please. Thanks
  • To post as a guest, your comment is unpublished.
    Trisha · 2 months ago
    This code is brilliant - Thank you. Just one thing - its splitting the data as I need it too but amongst creating the relevant sheets its creating blank sheets too.


    Are you able to help with this?
  • To post as a guest, your comment is unpublished.
    Aaseef khan · 2 months ago
    Thanks for the Magic Words
  • To post as a guest, your comment is unpublished.
    Muhammad Jahanzaib · 3 months ago
    Thanks for excellent & brilliant code. I came across a bug, if field name is too long, the new sheet is not created. It should be like that the new sheet may be named with the maximum number of characters allowed. Regards,
  • To post as a guest, your comment is unpublished.
    Alex S · 3 months ago
    To anyone having issues with long sheet names (ie Sheet Names greater than 30 characters), replace:

    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

    with

    Dim sheetName As String
    For i = 2 To UBound(myarr)
    ws.Range(title).AutoFilter field:=vcol, Criteria1:=myarr(i) & ""
    ' Replace the below assignment to sheetName as you wish
    sheetName = Left(CStr(i - 1) & "_" & myarr(i), 30)
    If Not Evaluate("=ISREF('" & myarr(i) & "'!A1)") Then
    Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = sheetName
    Else
    Sheets(sheetName).Move after:=Worksheets(Worksheets.Count)
    End If
    ws.Range("A" & titlerow & ":A" & lr).EntireRow.Copy Sheets(sheetName).Range("A1")
    Sheets(sheetName).Columns.AutoFit
    Next

    This essentially limits the Sheet Name to legal limits of 30 characters. If you do not like the way the sheet is named, replace sheetName's assignment whatever you would like, keeping in mind that no two sheets can have the exact same name and must also be 30 characters or less.

    You can also remove the filtering that lingers at the end of the execution by adding this line just before "End Sub"

    On Error Resume Next
    ActiveSheet.ShowAllData

    Enjoy ^_^