Tipp: Az egyéb nyelvek a Google Fordítva vannak. Látogasson el a English a link verziója.
Belépek
x
or
x
x
Regisztráció
x

or

Hogyan oszthatjuk meg az adatokat több munkalapon Excel oszlop alapján?

Tegyük fel, hogy van egy munkalapja hatalmas adatokkal, és most az adatokat több munkalapra kell felosztania a név oszlopban (lásd a következő képernyőképet), és a nevek véletlenszerűen vannak megadva. Talán először rendezheti őket, majd másolhatja és beillesztheti őket egyenként új új munkalapokba. De ez türelmedre lesz szüksége, hogy többször másolódjon és beillesztsen. Ma beszélni fogok néhány gyors trükköt a feladat megoldására.

doc osztja az adatokat az 1 oszlopokkal

Az adatokat VBA kóddal ellátott oszlopon alapuló több munkalapra osztja

Adja át az adatokat több munkalapra a Kutools for Excel oszlop alapján


Az oszlopok vagy sorok számlálási munkalapokon történő több munkalapon történő megosztása:

Ha egy nagy munkalapot több lapra szeretne osztani egy adott oszlopadat vagy sorszám alapján, a Kutools for Excel's Adatok megosztása funkció segít gyorsan és egyszerűen megoldani ezt a feladatot.

doc osztja az adatokat az 6 oszlopokkal

Kutools for Excel: több mint 200 hasznos Excel bővítményekkel, szabadon próbálkozhat semmilyen korlátozással az 60 napokban. Töltse le és ingyen próbálja most!


Az adatokat VBA kóddal ellátott oszlopon alapuló több munkalapra osztja


Ha az adatokat oszlopadatok alapján gyorsan és automatikusan osztani szeretné, akkor a következő VBA-kód jó választás. Kérjük, tegye meg ezt:

1. Tartsa lenyomva a ALT + F11 billentyűk megnyitásához Microsoft Visual Basic for Applications ablak.

2. Kattints betétlap > Modulok, és illessze be a következő kódot a Modul ablakba.

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. Ezután nyomja meg a gombot F5 a kód futtatásához szükséges kulcs, és egy gyorsablak jelenik meg, hogy emlékeztesse a fejléc sorát, lásd a képernyőt:

doc osztja az adatokat az 7 oszlopokkal

4. És akkor kattintson OK gomb, és a második parancssorban jelölje ki az osztani kívánt oszlopadatokat, lásd a képernyőképet:

doc osztja az adatokat az 8 oszlopokkal

5. Ezután kattints a gombra OK, és az aktív munkalap összes adata több munkalapra oszlik az oszlopérték alapján. A megosztott munkalapokat pedig a megosztott cellák nevével nevezik. A képernyőkép megtekintése:

doc osztja az adatokat az 2 oszlopokkal

Megjegyzések: Az osztott munkalapok a munkalap végén találhatók, ahol a mester munkalap be van kapcsolva.


Adja át az adatokat több munkalapra a Kutools for Excel oszlop alapján

Excel kezdőként ez a hosszú VBA kód némileg nehéz számunkra, és a legtöbben még nem tudjuk, hogyan kell módosítani a kódot, ahogy mi szükségünk van.

Itt bemutatom Önnek egy többfunkciós eszközt -Kutools for Excel, annak Adatok megosztása segédprogram nemcsak segíthet az oszlopon alapuló több munkalapon történő adatmegosztásra, hanem a sorok számlálására is.

Kutools for Excel : több mint 300 hasznos Excel bővítményekkel, ingyenesen próbálkozhat az 60 napokban korlátozás nélkül.

Ha telepítve van Kutools for Excel, kérjük, tegye a következőket:

1. Válassza ki a felosztani kívánt adatkategóriát.

2. Kattints Kutools Plus > Munkalap > Adatok megosztása, lásd a képernyőképet:

doc osztja az adatokat az 3 oszlopokkal

3. Az Adatok megosztása több munkalapon párbeszédablak, akkor:

1). választ Egyedi oszlop lehetőség a Split alapján szakaszban, és válassza ki azt az oszlopértéket, amelyet a legördülő listán alapul kíván felosztani. (Ha az adataid fejléceket tartalmaznak, és minden egyes új megosztott munkalapra be szeretné illeszteni őket, kérjük, ellenőrizze Az adataim fejlécekkel rendelkeznek választási lehetőség.)

2). Ezután megadhatja a megosztott munkalap nevét, a Új munkalapok neve szakaszban adja meg a munkalap nevek szabályait a Szabályok legördülő listát, hozzáadhatja a prefix or képző a lapok nevére is.

3). Kattints a OK gomb. Lásd a képernyőképet:

doc osztja az adatokat az 4 oszlopokkal

4. Most az adatokat több munkafüzetre osztják egy új munkafüzetben.

doc osztja az adatokat az 5 oszlopokkal

Kattintson a Kutools for Excel letöltéséhez és ingyenes próbaverzióhoz!


Adja át az adatokat több munkalapra a Kutools for Excel oszlop alapján

Kutools for Excel több mint 300 hasznos Excel eszközöket tartalmaz. Ingyenes az 60 napokban korlátozás nélkül. Töltse le most az ingyenes próbaverziót!


Kapcsolódó cikk:

Hogyan oszthatjuk meg az adatokat több munkalapon a sorok számlálásával?



Ajánlott termelékenységi eszközök

Office Tab

arany star1 Kényelmes lapokat hozhat Excel és más Office szoftverekhez, akárcsak a Chrome, a Firefox és az új Internet Explorer.

Kutools for Excel

arany star1 Elképesztő! Növelje termelékenységét 5 perc alatt. Nincs szükség különleges képességekre, kivéve két órát minden nap!

arany star1 300 Az Excel új funkciói, az Excel nagyon egyszerű és erőteljes:

  • A cella / sorok / oszlopok egyesítése adatok elvesztése nélkül.
  • Több lap és munkafüzet kombinálása és egységesítése.
  • Hasonlítsa össze a tartományokat, másolja a többszörös tartományokat, konvertálja a dátumot, a mértékegységet és a pénznemek konverzióját.
  • Számolás a Színek, a Paging Subtotals, az Advanced Sort és a Super Filter,
  • Több Select / Insert / Delete / Szöveg / Formátum / Link / Comment / Workbooks / Worksheets Tools ...

A Kutools for Excel képernyőkép

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.
    Katharina · 14 days ago
    Great Script, thanks! What do I have to do to set the header row range and column to use for grouping/splitting within the script? I know it is more elegant to use selectable parameters but for my use case it is always the same. As I do know nothing about VBA, any little hint is appreciated :-) Best, Katharina
  • To post as a guest, your comment is unpublished.
    daiana · 18 days ago
    It doesn't work with 120000 rows. Is there any way to make it work?
  • To post as a guest, your comment is unpublished.
    Radoslav · 21 days ago
    Perfect!!! Works and refer to all my demands. Tnx for that source code.
  • To post as a guest, your comment is unpublished.
    Rudi Miller · 28 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 · 2 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?