Cookies hjelper oss å levere våre tjenester. Ved å bruke våre tjenester, samtykker du til vår bruk av informasjonskapsler.
Tips: Andre språk er Google-oversatt. Du kan besøke English versjon av denne lenken.
Logg inn
x
or
x
x
Registrere
x

or

Hvordan dele data i flere regneark basert på kolonne i Excel?

Hvis du antar at du har et regneark med store rader med data, og nå må du dele dataene i flere regneark basert på Navn kolonne (se følgende skjermbilde), og navnene er skrevet tilfeldig. Kanskje du kan sortere dem først, og deretter kopiere og lime dem en etter en i andre nye regneark. Men dette vil trenge tålmodigheten til å kopiere og lime gjentatte ganger. I dag skal jeg snakke om noen raske triks for å løse denne oppgaven.

doc splitt data ved kolonner 1

Del data i flere regneark basert på kolonne med VBA-kode

Del data i flere regneark basert på kolonne med Kutools for Excel


Del data i flere regneark basert på bestemt kolonne eller rader telle i regneark:

Hvis du vil dele et stort regneark i flere ark basert på spesifikke kolonnedata eller rader, teller Kutools for Excel's Split data funksjonen kan hjelpe deg med å løse denne oppgaven raskt og enkelt.

doc splitt data ved kolonner 6

Kutools for Excel: Med mer enn 200 praktiske Excel-tillegg, kan du prøve uten begrensning i 60-dager. Last ned og gratis prøveversjon nå!


Del data i flere regneark basert på kolonne med VBA-kode


Hvis du vil dele dataene basert på kolonneverdi raskt og automatisk, er følgende VBA-kode et godt valg. Vennligst gjør slik:

1. Hold nede ALT + F11 nøkler for å åpne Microsoft Visual Basic for Applications vinduet.

2. Klikk innfelt > Modules, og lim inn følgende kode i modulvinduet.

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. Deretter trykker du på F5 nøkkel for å kjøre koden, og en ledig boks er poppet ut for å minne deg om å velge topplinjen, se skjermbilde:

doc splitt data ved kolonner 7

4. Og klikk deretter OK knappen, og i den andre spørringsboksen, velg kolonne dataene du vil dele basert på, se skjermbilde:

doc splitt data ved kolonner 8

5. Deretter klikker du OK, og alle dataene i det aktive regnearket er delt inn i flere regneark ved kolonneverdien. Og de splittede regnearkene er navngitt med delt celle navn. Se skjermbilde:

doc splitt data ved kolonner 2

Merknader: Delte regnearkene er plassert i enden av arbeidsboken der masterkjemaet er inne.


Del data i flere regneark basert på kolonne med Kutools for Excel

Som en Excel-nybegynner er denne lange VBA-koden noe vanskelig for oss, og de fleste av oss vet ikke hvordan man endrer koden som vårt behov.

Her vil jeg introdusere deg et multifunksjonsverktøy -Kutools for Excel, det er Split data verktøyet kan ikke bare hjelpe deg med å dele data i flere regneark basert på kolonne, men kan også dele data etter rekkevidde.

Kutools for Excel : med mer enn 300-praktiske Excel-tillegg, gratis å prøve uten begrensning i 60-dager.

Hvis du har installert Kutools for Excel, gjør det som følger:

1. Velg datafeltet du vil dele.

2. Klikk Kutools More > Regneark > Split data, se skjermbilde:

doc splitt data ved kolonner 3

3. på Del data i flere regneark dialogboksen, må du:

1). Plukke ut Spesifikk kolonne alternativet i Split basert på delen, og velg kolonneverdien som du vil dele dataene basert på i rullegardinlisten. (Hvis dataene dine har overskrifter og du vil sette dem inn i hvert nytt delt regneark, vennligst sjekk Mine data har overskrifter alternativ.)

2). Deretter kan du angi delt regnearknavn, under Nytt regnearknavn delen, spesifiser regnearknavnreglene fra Regler rullegardinliste, du kan legge til Prefix or suffiks for arknavnene også.

3). Klikk på OK knapp. Se skjermbilde:

doc splitt data ved kolonner 4

4. Nå deles dataene i flere regneark i en ny arbeidsbok.

doc splitt data ved kolonner 5

Klikk for å laste ned Kutools for Excel og gratis prøveversjon nå!


Del data i flere regneark basert på kolonne med Kutools for Excel

Kutools for Excel inneholder mer enn 300 praktiske Excel-verktøy. Gratis å prøve uten begrensning i 60 dager. Last ned gratis prøveversjon nå!


Relatert artikkel:

Slik splittrer du data i flere regneark ved å telle rader?



Anbefalte produktivitetsverktøy

Office-fanen

gull star1 Ta med praktiske faner til Excel og annen Office-programvare, akkurat som Chrome, Firefox og ny Internet Explorer.

Kutools for Excel

gull star1 Fantastisk! Øk produktiviteten din i 5 minutter. Trenger ikke noen spesielle ferdigheter, lagre to timer hver dag!

gull star1 300 Nye funksjoner for Excel, gjør Excel veldig enkelt og kraftig:

  • Slett Cell / Rows / Columns uten å miste data.
  • Kombinere og konsolidere flere ark og arbeidsbøker.
  • Sammenlign Ranges, Kopier flere ranger, Konverter tekst til dato, Enhet og Valutaomregning.
  • Telling av farger, personsøkende subtotaler, avansert sortering og superfilter,
  • Mer Velg / Sett inn / Slett / Tekst / Format / Link / Kommentar / Arbeidsbøker / Regneark Verktøy ...

Skjermbilde av Kutools for 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.
    Beth · 3 years ago
    thanks, works great!
  • To post as a guest, your comment is unpublished.
    Henrik · 3 years ago
    Hi,
    the code works fine for most of the data. However, some sheets are created without the title and without data. This happens without a (for me) visible pattern. The sheet is created but the entire range of data is simply not copied into the sheet and the sheet name is e.g. Sheet4 if is it the 4th sheet. When it happens, it happens for the entire range of that specific title area.
    It doesn't stop the process, as some sheets are correctly created later during the macro...

    Screendump: [url]https://www.dropbox.com/s/xnjcurt4ub01d1j/Screen%20Shot%202015-10-02%20at%2017.27.28.png?dl=0[/url]
    • To post as a guest, your comment is unpublished.
      John · 3 years ago
      I had the same issue and it looks to me like the number of characters in the cells that were skipped might be too long? Anyone think that might be the problem??

      [quote name="Henrik"]Hi,
      the code works fine for most of the data. However, some sheets are created without the title and without data. This happens without a (for me) visible pattern. The sheet is created but the entire range of data is simply not copied into the sheet and the sheet name is e.g. Sheet4 if is it the 4th sheet. When it happens, it happens for the entire range of that specific title area.
      It doesn't stop the process, as some sheets are correctly created later during the macro...

      Screendump: [url]https://www.dropbox.com/s/xnjcurt4ub01d1j/Screen%20Shot%202015-10-02%20at%2017.27.28.png?dl=0[/url][/quote]
      • To post as a guest, your comment is unpublished.
        Henrik · 3 years ago
        Hi John - You are right!
        It was the length/number of characters in the cells that are used as sheet-names... i shortened them a bit (to 30 I think) and then the problem disappeared.
        :)
  • To post as a guest, your comment is unpublished.
    Rhys · 3 years ago
    Hi

    This code works perfectly for seven tabs, however after that I have the following error "excel cannot complete this task with available resources choose less data or close other application"

    my data on sheet1 is A-E with 16133 rows.

    Is this due to my pc only running 4gb ram?
  • To post as a guest, your comment is unpublished.
    MF · 3 years ago
    Hello

    When I try to use this it only copies the title into each new workbook. What do I need to change in order to have all rows associated with a given column value into the new worksheets. I have Data in Columns A2 through N3200
  • To post as a guest, your comment is unpublished.
    McMoeLee · 3 years ago
    Really great Work!! Helps me a lot!
    Copy, Little adapt for my needs, works like a charm!