Hoppa till huvudinnehåll

Excel-tips: Dela upp data i flera kalkylblad/arbetsböcker baserat på kolumnvärde

Författare: Xiaoyang Senast ändrad: 2024-08-01

När du hanterar stora datamängder i Excel kan det vara mycket fördelaktigt att dela upp data i flera kalkylblad baserat på specifika kolumnvärden. Denna metod förbättrar inte bara organiseringen av data utan förbättrar också läsbarheten och underlättar dataanalys.

Anta att du har en stor försäljningspost som innehåller flera poster som produktnamnet, kvantiteten såld under det första kvartalet. Målet är att dela upp dessa data i separata kalkylblad baserat på varje produktnamn så att individuella försäljningsresultat kan analyseras separat.

Dela upp data i flera kalkylblad baserat på kolumnvärde

Dela upp data i flera arbetsböcker baserat på kolumnvärde med VBA-kod

Dela upp data i flera kalkylblad baserat på kolumnvärde


Dela upp data i flera kalkylblad baserat på kolumnvärde

Normalt kan du sortera datalistan först och sedan kopiera och klistra in dem en efter en i andra nya kalkylblad. Men detta kommer att kräva ditt tålamod för att kopiera och klistra upprepade gånger. I det här avsnittet kommer vi att introducera två enkla metoder för att effektivt hantera denna uppgift i Excel, vilket sparar tid och minskar risken för fel.

Dela upp data i flera kalkylblad baserat på kolumnvärde med VBA-kod

1. Håll ner ALT + F11 nycklar för att öppna Microsoft Visual Basic för applikationer fönster.

2. klick Insert > Modulernaoch klistra in följande kod i modulfönstret.

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. Tryck sedan på F5 för att köra koden, och en uppmaningsruta dyker upp för att påminna dig om att välja rubrikraden och klicka sedan på OK. Se skärmdump:
dela upp data i kalkylblad med vba-kod för att välja rubrikrad

4. I den andra uppmaningsrutan, välj kolumndata som du vill dela upp baserat på och klicka sedan OK. Se skärmdump:
dela upp data i kalkylblad med vba-kod för att välja dataintervall

5. All data i det aktiva kalkylbladet är uppdelat i flera kalkylblad baserat på kolumnvärdena. De resulterande kalkylbladen namnges enligt värdena i de delade cellerna och placeras i slutet av arbetsboken. Se skärmdump:
dela upp data i kalkylblad med vba-kod för att få resultatet

 

Dela upp data i flera kalkylblad baserat på kolumnvärde med Kutools för Excel

Kutools för Excel ger smart funktion - Split data direkt in i din Excel-miljö. Att dela upp data i flera kalkylblad är inte längre en utmaning. Vårt intuitiva verktyg delar automatiskt upp din datamängd baserat på det valda kolumnvärdet eller antalet rader, vilket säkerställer att varje information är precis där du behöver den. Säg adjö till den tråkiga uppgiften att manuellt organisera dina kalkylblad och omfamna ett snabbare, felfritt sätt att hantera din data.

Anmärkningar: Att tillämpa detta Split dataFör det första bör du ladda ner Kutools för Excel, och använd sedan funktionen snabbt och enkelt.

När du har installerat Kutools för Excel, välj dataintervallet och klicka sedan Kutools Plus > Split data att öppna Dela upp data i flera kalkylblad dialog ruta.

  1. Välja Specifik kolumn alternativet i Dela baserat på och välj det kolumnvärde som du vill dela data baserat på från rullgardinsmenyn.
  2. Om dina data har rubriker och du vill infoga dem i varje nytt delat kalkylblad, kontrollera Mina data har rubriker alternativ. (Du kan ange antalet rubrikrader baserat på dina data. Om din data till exempel innehåller två rubriker, skriv 2.)
  3. Sedan kan du ange namnen på delat kalkylblad under Nytt kalkylbladets namn sektion, ange regeln för kalkylbladsnamn från rullgardinsmenyn Regler, kan du lägga till Prefix or Ändelse för arknamnen också.
  4. Klicka på OK knapp. Se skärmdump:
    dela upp data i kalkylblad med kutools för att ställa in operationerna

Nu delas data i kalkylbladet upp i flera kalkylblad i en ny arbetsbok.
dela upp data i kalkylblad med kutools för att få resultatet


Dela upp data i flera arbetsböcker baserat på kolumnvärde med VBA-kod

Ibland, snarare än att dela upp data i flera kalkylblad, kan det vara mer fördelaktigt att dela upp data i separata arbetsböcker baserat på en nyckelkolumn. Här är en steg-för-steg-guide om hur du använder VBA-kod för att automatisera processen att dela upp data i flera arbetsböcker baserat på ett specifikt kolumnvärde.

1. Håll ner ALT + F11 nycklar för att öppna Microsoft Visual Basic för applikationer fönster.

2. klick Insert > Modulernaoch klistra in följande kod i Modulfönster.

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
Anmärkningar: I ovanstående kod bör du ändra filsökvägen till din egen där de delade arbetsböckerna sparas i det här skriptet: savePath = "C:\Users\AddinsVM001\Desktop\flera filer\".

3. Tryck sedan på F5 för att köra koden, och en uppmaningsruta dyker upp för att påminna dig om att välja rubrikraden och klicka sedan på OK. Se skärmdump:
dela upp data i arbetsböcker med vba-kod för att välja rubrikrad

4. I den andra uppmaningsrutan, välj kolumndata som du vill dela upp baserat på och klicka sedan OK. Se skärmdump:
dela upp data i arbetsböcker med vba-kod för att välja dataintervall

5. Efter uppdelningen delas all data i det aktiva kalkylbladet upp i flera arbetsböcker baserat på kolumnvärdena. Alla delade arbetsböcker sparas i den mapp du angav. Se skärmdump:
dela upp data i arbetsböcker med vba-kod för att få resultatet

Relaterade artiklar:

  • Dela data i flera kalkylblad efter antal rader
  • Att effektivt dela upp ett stort dataintervall i flera Excel-kalkylblad baserat på ett specifikt radantal kan effektivisera datahanteringen. Att till exempel dela upp en datauppsättning var 5:e rad i flera ark kan göra den mer hanterbar och organiserad. Den här guiden erbjuder två praktiska metoder för att utföra denna uppgift snabbt och enkelt.
  • Slå samman två eller flera tabeller till en baserad på nyckelkolumner
  • Om du antar att du har tre tabeller i en arbetsbok, nu vill du slå samman dessa tabeller i en tabell baserat på motsvarande nyckelkolumner för att få resultatet enligt nedanstående skärmdump. Det här kan vara en besvärlig uppgift för de flesta av oss, men oroa dig inte, den här artikeln, jag kommer att introducera några metoder för att lösa detta problem.
  • Dela upp textsträngar med avgränsare i flera rader
  • Normalt kan du använda funktionen Text till kolumn för att dela upp cellinnehåll i flera kolumner med en specifik avgränsare, såsom kommatecken, punkt, semikolon, snedstreck, etc. Men ibland kan du behöva dela upp det avgränsade cellinnehållet i flera rader och upprepa data från andra kolumner enligt skärmbilden nedan. Har du några bra sätt att hantera denna uppgift i Excel? Denna handledning introducerar några effektiva metoder för att slutföra det här jobbet i Excel.
  • Dela upp flerrads cellinnehåll i separerade rader/kolumner
  • Om du antar att du har cellinnehåll med flera rader som separeras med Alt + Enter, och nu måste du dela upp flerradsinnehållet till separerade rader eller kolumner, vad kan du göra? I den här artikeln kommer du att lära dig hur du snabbt delar upp flerradscellinnehåll i separerade rader eller kolumner.

Bästa kontorsproduktivitetsverktyg

🤖 Kutools AI Aide: Revolutionera dataanalys baserat på: Intelligent utförande   |  Generera kod  |  Skapa anpassade formler  |  Analysera data och generera diagram  |  Anropa Kutools funktioner.
Populära funktioner: Hitta, markera eller identifiera dubbletter   |  Ta bort tomma rader   |  Kombinera kolumner eller celler utan att förlora data   |   Rund utan formel ...
Superuppslag: Flera kriterier VLookup    VLookup med flera värden  |   VSök över flera ark   |   Fuzzy Lookup ....
Avancerad rullgardinslista: Skapa snabbt en rullgardinslista   |  Beroende rullgardinslista   |  Flervals-rullgardinslista ....
Kolumnhanterare: Lägg till ett specifikt antal kolumner  |  Flytta kolumner  |  Växla synlighetsstatus för dolda kolumner  |  Jämför intervall och kolumner ...
Utvalda funktioner: Rutnätsfokus   |  Designvy   |   Stor formelbar    Arbetsbok & Bladhanterare   |  Resursbibliotek (Automatisk text)   |  Datumväljare   |  Kombinera arbetsblad   |  Kryptera/Dekryptera celler    Skicka e-postmeddelanden efter lista   |  Superfilter   |   Specialfilter (filtrera fet/kursiv/genomstruken...) ...
Topp 15 verktygssatser12 text verktyg (lägga till text, Ta bort tecken, ...)   |   50+ Diagram Typer (Gantt Chart, ...)   |   40+ Praktiskt Formler (Beräkna ålder baserat på födelsedag, ...)   |   19 Införande verktyg (Infoga QR-kod, Infoga bild från sökväg, ...)   |   12 Konvertering verktyg (Siffror till ord, Valutaväxling, ...)   |   7 Slå ihop och dela verktyg (Avancerade kombinera rader, Dela celler, ...)   |   ... och mer

Uppgradera dina Excel-färdigheter med Kutools för Excel och upplev effektivitet som aldrig förr. Kutools för Excel erbjuder över 300 avancerade funktioner för att öka produktiviteten och spara tid.  Klicka här för att få den funktion du behöver mest...


Fliken Office ger ett flikgränssnitt till Office och gör ditt arbete mycket enklare

  • Aktivera flikredigering och läsning i Word, Excel, PowerPoint, Publisher, Access, Visio och Project.
  • Öppna och skapa flera dokument i nya flikar i samma fönster, snarare än i nya fönster.
  • Ökar din produktivitet med 50 % och minskar hundratals musklick för dig varje dag!