Note: The other languages of the website are Google-translated. Back to English

Hur delar jag data i flera kalkylblad baserat på kolumn i Excel?

Om du antar att du har ett kalkylblad med enorma rader med data, och nu måste du dela upp data i flera kalkylblad baserat på Namn (se följande skärmdump) och namnen matas in slumpmässigt. Kanske kan du sortera dem först och sedan kopiera och klistra in dem en efter en i andra nya kalkylblad. Men detta behöver ditt tålamod för att kopiera och klistra in flera gånger. Idag kommer jag att prata om några snabba knep för att lösa denna uppgift.

doc dela data med kolumner 1

Dela data i flera kalkylblad baserat på kolumn med VBA-kod

Dela upp data i flera kalkylblad baserat på kolumn med Kutools for Excel


Dela data i flera kalkylblad baserat på kolumn med VBA-kod

Om du vill dela upp data baserat på kolumnvärde snabbt och automatiskt är följande VBA-kod ett bra val. Gör så här:

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

2. Klicka 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 nyckel för att köra koden, och en snabbruta visas för att påminna dig om att du väljer rubrikraden, se skärmdump:

doc dela data med kolumner 7

4. Och klicka sedan på OK -knappen och i den andra rutan, välj kolumndata som du vill dela baserat på, se skärmdump:

doc dela data med kolumner 8

5. Klicka sedan OK, och all data i det aktiva kalkylbladet delas upp i flera kalkylblad med kolumnvärdet. Och delade kalkylblad heter med delade cellnamn. Se skärmdump:

doc dela data med kolumner 2

Anmärkningar: De delade kalkylbladen placeras i slutet av arbetsboken där huvudkalkylbladet finns.


Dela upp data i flera kalkylblad baserat på kolumn med Kutools for Excel

Som en nybörjare i Excel är den här långa VBA-koden något svår för oss, och de flesta av oss vet inte ens hur man ändrar koden efter behov. Här presenterar jag ett multifunktionellt verktyg--Kutools for Excel, dess Split data verktyget kan inte bara hjälpa dig att dela upp data i flera kalkylblad baserat på kolumn, utan kan också dela data efter antal rader.

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

När du har installerat Kutools for Excel, gör så här:

1. Välj det dataområde som du vill dela.

2. Klicka Kutools Plus > Arbetsblad > Split data, se skärmdump:

doc dela data med kolumner 3

3. I Dela data i flera kalkylblad dialogrutan måste du:

1). Välj Specifik kolumn alternativet i Dela baserat på och välj det kolumnvärde som du vill dela upp data baserat på i listrutan. (Om dina data har rubriker och du vill infoga dem i varje nytt delat kalkylblad, kontrollera Mina data har rubriker alternativ.)

2). Sedan kan du ange namnen på delade kalkylblad under Nytt kalkylbladets namn avsnitt, ange reglerna för kalkylbladets namn från regler rullgardinsmenyn kan du lägga till Prefix or Ändelse för arknamnen också.

3). Klicka på OK knapp. Se skärmdump:

doc dela data med kolumner 4

4. Nu delas data i flera kalkylblad i en ny arbetsbok.

doc dela data med kolumner 5

Klicka för att hämta Kutools for Excel och gratis provperiod nu!


Dela upp data i flera kalkylblad baserat på kolumn med Kutools for Excel

Kutools for Excel innehåller mer än 300 praktiska Excel-verktyg. Gratis att prova utan begränsning på 30 dagar. Ladda ner den kostnadsfria testversionen nu!


Relaterad artikel:

Hur delar jag data i flera kalkylblad efter antal rader?


De bästa Office-produktivitetsverktygen

Kutools for Excel Löser de flesta av dina problem och ökar din produktivitet med 80 %

  • återanvändning: Sätt snabbt i komplexa formler, diagram och allt som du har använt tidigare; Kryptera celler med lösenord; Skapa e-postlista och skicka e-post ...
  • Super Formula Bar (enkelt redigera flera rader med text och formel); Läslayout (enkelt läsa och redigera ett stort antal celler); Klistra in i filtrerat intervall...
  • Sammanfoga celler / rader / kolumner utan att förlora data; Delat cellinnehåll; Kombinera duplicerade rader / kolumner... Förhindra duplicerade celler; Jämför intervall...
  • Välj Duplicera eller Unikt Rader; Välj tomma rader (alla celler är tomma); Super Find och Fuzzy Find i många arbetsböcker; Slumpmässigt val ...
  • Exakt kopia Flera celler utan att ändra formelreferens; Skapa referenser automatiskt till flera ark; Sätt in kulor, Kryssrutor och mer ...
  • Extrahera text, Lägg till text, ta bort efter position, Ta bort mellanslag; Skapa och skriva ut personsökningstalsatser; Konvertera mellan celler innehåll och kommentarer...
  • Superfilter (spara och tillämpa filterscheman på andra ark); Avancerad sortering efter månad / vecka / dag, frekvens och mer; Specialfilter av fet, kursiv ...
  • Kombinera arbetsböcker och arbetsblad; Sammanfoga tabeller baserat på nyckelkolumner; Dela data i flera ark; Batchkonvertera xls, xlsx och PDF...
  • Mer än 300 kraftfulla funktioner. Stöder Office / Excel 2007-2021 och 365. Stöder alla språk. Enkel implementering i ditt företag eller organisation. Fullständiga funktioner 30 dagars gratis provperiod. 60 dagars pengarna tillbaka-garanti.
kte-flik 201905

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!
officetab botten
Sortera kommentarer efter
Kommentarer (303)
Inga betyg än. Bli först med att betygsätta!
Denna kommentar minimerades av moderatoren på webbplatsen
Dela upp data i flera kalkylblad baserat på kolumn med VBA-kod visar något fel. försök att rätta till det och uppdatera detsamma. Om du tillhandahåller exemplet på Excel-filerna kommer det att vara till stor hjälp.
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, tack för koden den fungerar för mig! Jag försöker hitta en kod som delar upp ett huvudark i flera ark baserat på datum
Denna kommentar minimerades av moderatoren på webbplatsen
Det var otroligt! Den här processen skulle ha tagit mig över en timme att göra, men den gjordes inom 30 sekunder. Den här kommer jag att behålla för mitt VBA-bibliotek. Tack!
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, jag har 30000 8 celler i mitt kalkylblad och måste dela upp dem på månader. finns det en kod jag kan använda för att göra det snabbare. Jag har XNUMX kolumner och datum är kolumn B. Jag har lekt runt med ovanstående kod som ges men misslyckats med det. Kan du snälla hjälpa mig med detta. Tack på förhand
Denna kommentar minimerades av moderatoren på webbplatsen
Jag får följande fel: Runtime error '6' overflow Efter felsökning visa raden For i = 2 To Ir Mina excel-rader är över 500,000 XNUMX. Finns det någon lösning Tack så mycket för koden. Med vänlig hälsning Lok
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, tack så mycket för koden. Jag får följande fel: Runtime error '6' overflow på raden For i = 2 To Ir Någon lösning för detta. Tack
Denna kommentar minimerades av moderatoren på webbplatsen
Jag får ett felmeddelande när jag trycker på F5 - GoTo Box ber om en referens??
Denna kommentar minimerades av moderatoren på webbplatsen
VBA-processen fungerade perfekt, tack så mycket för att du delar med dig av din expertis och sparar mig mycket tid!
Denna kommentar minimerades av moderatoren på webbplatsen
VBA-koden fungerade perfekt. Det verkar inte uppdatera arken eftersom ändringar görs i ark1. Snälla hjälp.
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, tack för koden den fungerar för mig! Jag har bara två frågor/anmärkningar. 1 den kopierade datan inkluderar inte layouten för originalfilen. Skulle det vara möjligt att kopiera data som tabell med autofilter? 2 verkar den kopierade datan inte vara begränsad till titelområdet. Är det möjligt att justera koden för ett specifikt intervall eller tabellnamn? Dessa justeringar skulle vara till stor hjälp. Hälsningar, Pieter
Denna kommentar minimerades av moderatoren på webbplatsen
Fungerar som en smäck! Tack.
Denna kommentar minimerades av moderatoren på webbplatsen
Fungerar som en charm... Tack för premiumkoden... :lol:
Denna kommentar minimerades av moderatoren på webbplatsen
Tack så mycket, det här fungerade jättebra. Men vad händer om jag vill att data inom varje flik sorteras igen (med hjälp av en annan kolumn)? I grund och botten delar denna VBA upp den i flikar men jag kanske vill ha den nedbruten ytterligare..är det möjligt?
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Jonathan, Gammal kommentar jag vet, men kan vara till hjälp för andra i framtiden: Jag behövde göra detta men kunde inte hitta ett enkelt sätt med VBA. Men jag upptäckte att om du gör en ny kolumn i ditt kalkylblad som en sammanslagning av 2, så t.ex. =A1&" "&A2 Detta ger dig då 1 cell med båda uppsättningarna av information. Du kan sedan köra ovanstående modul och det fungerar bra! Redigera - Datan i kolumnerna behöver vara kortare än 30 tecken, annars kopieras inte data över (visas som ett fel på modulen) och du får ett tomt ark i mitten av dina nya ark.
Denna kommentar minimerades av moderatoren på webbplatsen
Fantastiskt.. Det här var fantastiskt. Jag kämpade med det här problemet så länge och den här koden kom in som en paus. Tack för att du delar med dig.
Denna kommentar minimerades av moderatoren på webbplatsen
Fantastisk. Tack för inlägget.
Denna kommentar minimerades av moderatoren på webbplatsen
Koden fungerade som en charm för en mindre data (mindre än 1200 rader). Jag försökte använda på det större kalkylbladet med (17000 rader) och det kraschade precis efter att ha delats upp i 10-12 ark. Så vi försökte dela upp originaldata i 3 olika arbetsböcker och ändå stänga av oss. Vi har Windows 7 och våra datorer är inte heller så långsamma. Föreslår du några begränsade rader med data för att använda den här koden säkert? Alla förslag skulle uppskattas.
Denna kommentar minimerades av moderatoren på webbplatsen
Koden fungerade som en charm för en mindre data (mindre än 1200 rader). Jag försökte använda på det större kalkylbladet med (17000 rader) och det kraschade precis efter att ha delats upp i 10-12 ark. Så vi försökte dela upp originaldata i 3 olika arbetsböcker och ändå stänga av oss. Vi har Windows 7 och våra datorer är inte heller så långsamma. Föreslår du några begränsade rader med data för att använda den här koden säkert? Alla förslag skulle uppskattas. Vad jag inte är säker på är: Vad är det maximala antalet rader som makrot kan stödja? Jag skulle kunna leka med det... Det är någonstans mellan 20k och 40k![/quote]
Denna kommentar minimerades av moderatoren på webbplatsen
Står inför samma problem. Koden fungerar för ark där data är färre rader, men för större data visar den fel som "Excel kan inte slutföra den här uppgiften med tillgängliga resurser. Välj mindre data eller stäng andra applikationer" (det finns ingen annan applikation som fungerar samtidigt) Koden fungerade som en charm för en mindre data (mindre än 1200 rader). Jag försökte använda på det större kalkylbladet med (17000 rader) och det kraschade precis efter att ha delats upp i 10-12 ark. Så vi försökte dela upp originaldata i 3 olika arbetsböcker och ändå stänga av oss. Vi har Windows 7 och våra datorer är inte heller så långsamma. Föreslår du några begränsade rader på data för att använda den här koden säkert? Alla förslag skulle uppskattas.
Denna kommentar minimerades av moderatoren på webbplatsen
Du är min all time hjälte! Jag har letat efter detta i månader utan framgång. Jag måste göra detta vecko-/månadsvis dela upp rapporter i 147+ kalkylblad och de kommer inte att ge mig kutools. På den noten... Jag behöver verkligen lära mig kodning. :( Men tack!
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, jag har ett ark med 65000 8 poster och med 80 olika fall, så i princip borde det generera 6 olika ark. Jag försökte köra den här koden, men den kastar Runtime Error XNUMX Overflow. Kan den här koden justeras för att lösa mitt problem? Vänligen ur hjälp kommer att vara mycket uppskattad.
Denna kommentar minimerades av moderatoren på webbplatsen
[quote]HEJ, jag har ett ark med 65000 8 poster och med 80 olika fall, så i princip borde det generera 6 olika ark. Jag försökte köra den här koden, men den kastar Runtime Error XNUMX Overflow. Kan den här koden justeras för att lösa mitt problem? Vänligen ur hjälp kommer att vara mycket uppskattad.Av ACE[/quote] Försök att ändra Dim vcol, i As Integer till Dim vcol, i As Long
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Jag försökte ändra DIM vcol till LOng och det fungerade bra men plötsligt genom ett fel finns det inte tillräckligt med minne för att slutföra den här åtgärden, försök använda mindre data eller stänga andra applikationer. Även om jag inte har några andra applikationer öppna. Jag har lite mer än 100 k rader och ca. 16 mb filstorlek. all hjälp skulle uppskattas. Tack Mustafa
Denna kommentar minimerades av moderatoren på webbplatsen
Fantastisk bit kod - fungerar perfekt (om du ändrar variablerna till den som ditt kalkylblad behöver)
Denna kommentar minimerades av moderatoren på webbplatsen
Jag har ett blad med ett varierande antal rader. En av kolumnerna är datumen från 2010 och framåt. De andra kolumnerna är fondnamn med NAV-data för varje fond mot datum. Så jag vill inte dela upp kolumnerna i olika blad, jag vill dela upp varje FONDNAMN i ett eget blad med NAV-data per månadsslut, inte de dagliga datumen. Kan detta göras eller är det omöjligt?
Denna kommentar minimerades av moderatoren på webbplatsen
Jag har ett kalkylblad som jag använder och jag försöker hitta en vba-kod som återskapar ett kontonamn och kopierar den specifika raden till en ny arbetsbok och ett ark med samma namn kan du hjälpa?
Denna kommentar minimerades av moderatoren på webbplatsen
Bra! VBA-koden fungerar, tack! Jag behöver dessa kalkylblad för att vara i individuella Excel-filer istället för kalkylblad och det finns ett fel när jag delar upp till många många kalkylblad.
Denna kommentar minimerades av moderatoren på webbplatsen
Starscor och Tim om du vill dela upp arken i filen i flera filer med hjälp av namnen på raderna finns det en liten makrokod på samma webbsida som gör det, sök bara på "dela upp en arbetsbok för att separera Excel-filer" kommer att hitta det. Lägg till koden för det exemplet i slutet av detta och ta bort dubbletten av ändsub och sub så klart så får du en fil för varje.
Denna kommentar minimerades av moderatoren på webbplatsen
kan någon hjälpa mig hur man sorterar kolumnerna i olika ark i samma arbetsbok åt gången och även tar bort dubbletter i olika ark då jag har runt 65 ark i samma arbetsbok
Denna kommentar minimerades av moderatoren på webbplatsen
det här är så spännande! Tack. Jag har letat efter det här ett tag.
Denna kommentar minimerades av moderatoren på webbplatsen
Utmärkt - tack för att du delar med dig av detta. Sprider även höjdpunkter/format till nya kalkylblad!
Det finns inga kommentarer här ännu
Ladda fler

Följ oss

Copyright © 2009 - www.extendoffice.com. | Alla rättigheter förbehållna. Drivs av ExtendOffice. | | Sitemap
Microsoft och Office-logotypen är varumärken eller registrerade varumärken som tillhör Microsoft Corporation i USA och / eller andra länder.
Skyddad av Sectigo SSL