Μετάβαση στο κύριο περιεχόμενο

Πώς να χωρίσετε έναν μεγάλο πίνακα σε πολλούς μικρούς πίνακες στο Excel;

Εάν έχετε ένα μεγάλο φύλλο εργασίας που περιέχει πολλές στήλες και εκατοντάδες ή χιλιάδες δεδομένα γραμμών, τώρα, θέλετε να χωρίσετε αυτόν τον μεγάλο πίνακα σε πολλούς μικρούς πίνακες με βάση την τιμή της στήλης ή τον αριθμό των γραμμών για να λάβετε τα ακόλουθα αποτελέσματα. Πώς θα μπορούσατε να αντιμετωπίσετε αυτήν την εργασία στο Excel;

Κύριος πίνακας   Διαχωρίστε τον πίνακα σε πολλούς πίνακες ανά τιμή στήλης Διαχωρίστε τον πίνακα σε πολλούς πίνακες κατά αριθμό σειρών

Διαχωρίστε έναν μεγάλο πίνακα σε πολλούς πίνακες με βάση την τιμή της στήλης με κώδικα VBA

Διαχωρίστε έναν μεγάλο πίνακα σε πολλούς πίνακες με βάση τον συγκεκριμένο αριθμό σειρών με κώδικα VBA

Διαχωρίστε έναν μεγάλο πίνακα σε πολλούς πίνακες με βάση την τιμή της στήλης ή τον αριθμό σειρών με ένα εκπληκτικό χαρακτηριστικό


Διαχωρίστε έναν μεγάλο πίνακα σε πολλούς πίνακες με βάση την τιμή της στήλης με κώδικα VBA

Για να χωρίσετε αυτόν τον μεγάλο πίνακα σε πολλούς πίνακες με βάση μια συγκεκριμένη τιμή στήλης, ο ακόλουθος κώδικας VBA μπορεί να σας κάνει τη χάρη. Παρακαλώ κάντε ως εξής:

1. Κρατήστε πατημένο το ALT + F11 για να ανοίξετε το Microsoft Visual Basic για εφαρμογές παράθυρο.

2. Κλίκ Κύριο θέμα > Μονάδα μέτρησηςκαι επικολλήστε τον ακόλουθο κώδικα στο Μονάδα μέτρησης Παράθυρο.

Κώδικας VBA: Διαχωρίστε έναν μεγάλο πίνακα σε πολλούς πίνακες ανά στήλη κλειδιού:

Sub Splitdatabycol()
'by 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
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. Αφού επικολλήσετε τον κωδικό, πατήστε F5 κλειδί για την εκτέλεση αυτού του κώδικα και εμφανίζεται ένα πλαίσιο προτροπής, επιλέξτε τη σειρά κεφαλίδας από τα δεδομένα σας, δείτε στιγμιότυπο οθόνης:

4. Στη συνέχεια, κάντε κλικ στο κουμπί OK, και εμφανίζεται ένα άλλο παράθυρο διαλόγου, επιλέξτε τα δεδομένα στήλης στα οποία θέλετε να χωρίσετε τον πίνακα με βάση, δείτε στιγμιότυπο οθόνης:

5. Κλίκ OK, αυτός ο μεγάλος πίνακας έχει χωριστεί σε πολλά φύλλα εργασίας από την τιμή της στήλης που βρίσκεται μετά το κύριο φύλλο. Και τα νέα φύλλα εργασίας ονομάζονται με την τιμή της στήλης. Δείτε στιγμιότυπο οθόνης:


Διαχωρίστε έναν μεγάλο πίνακα σε πολλούς πίνακες με βάση τον συγκεκριμένο αριθμό σειρών με κώδικα VBA

Εάν πρέπει να χωρίσετε τον πίνακα σε πολλούς πίνακες με βάση τον αριθμό των σειρών, ο ακόλουθος κώδικας VBA μπορεί να σας βοηθήσει.

1. Κρατήστε πατημένο το ALT + F11 για να ανοίξετε το Microsoft Visual Basic για εφαρμογές παράθυρο.

2. Κλίκ Κύριο θέμα > Μονάδα μέτρησηςκαι επικολλήστε τον ακόλουθο κώδικα στο Μονάδα μέτρησης Παράθυρο.

Κώδικας VBA: Διαχωρίστε έναν μεγάλο πίνακα σε πολλούς πίνακες κατά αριθμό σειρών:

Sub Splitdatabyrows()
'Updated by Extendoffice 
Dim WorkRng As Range
Dim xRow As Range
Dim SplitRow As Integer
Dim xWs As Worksheet
Dim xTRg As Range
Dim xNTRg As Range
Dim xIER
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set xTRg = Application.InputBox("Please select the header row:", xTitleId, "", Type:=8)
If TypeName(xTRg) = "Nothing" Then Exit Sub
Set WorkRng = Application.InputBox("Please select the data range(exclude the header row):", xTitleId, WorkRng.Address, Type:=8)
If TypeName(WorkRng) = "Nothing" Then Exit Sub
SplitRow = Application.InputBox("Split Row Num", xTitleId, Type:=1)
If SplitRow = 0 Then Exit Sub
Set xWs = WorkRng.Parent
Set xRow = WorkRng.Rows(1)
xIER = WorkRng.Rows.Count
xIER = WorkRng.Row + xIER - 1
Application.ScreenUpdating = False
For i = 1 To WorkRng.Rows.Count Step SplitRow
    resizeCount = SplitRow
    If (xIER - xRow.Row + 1) < SplitRow Then
        resizeCount = (xIER - xRow.Row + 1)
    End If
    xRow.Resize(resizeCount).Copy
    Set xWs = Application.Worksheets.Add(after:=Application.Worksheets(Application.Worksheets.Count))
    If xIER > (xRow.Row + SplitRow - 1) Then
        xWs.Name = xRow.Row & " - " & (xRow.Row + SplitRow - 1)
    ElseIf xIER = xRow.Row Then
        xWs.Name = xRow.Row
    Else
        xWs.Name = xRow.Row & " - " & xIER
    End If
    Application.ActiveSheet.Range("A1").PasteSpecial
    Set xNTRg = Application.ActiveSheet.Range("A1")
    xTRg.Copy
    xNTRg.Insert
    Set xRow = xRow.Offset(SplitRow)
Next
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

3. Στη συνέχεια, πατήστε F5 πλήκτρο, στο αναδυόμενο παράθυρο διαλόγου, επιλέξτε τη σειρά κεφαλίδας, δείτε στιγμιότυπο οθόνης:

4. Στη συνέχεια, κάντε κλικ στο κουμπί OK, και στο δεύτερο πλαίσιο προτροπής, επιλέξτε το εύρος δεδομένων που θέλετε να χωρίσετε κατά μέτρηση σειρών, δείτε στιγμιότυπο οθόνης:

5. Και μετά, συνεχίστε κάνοντας κλικ OK κουμπί, στο τρίτο πλαίσιο προτροπής, εισαγάγετε τον αριθμό των σειρών που θέλετε να χωρίσετε κατά, δείτε στιγμιότυπο οθόνης:

6. Στη συνέχεια, κάντε κλικ στο κουμπί OK κουμπί, ο κύριος πίνακας έχει χωριστεί σε πολλά φύλλα εργασίας με βάση τον αριθμό των σειρών όπως φαίνεται παρακάτω στιγμιότυπο οθόνης:


Διαχωρίστε έναν μεγάλο πίνακα σε πολλούς πίνακες με βάση την τιμή της στήλης ή τον αριθμό σειρών με ένα εκπληκτικό χαρακτηριστικό

Μπορεί οι παραπάνω κωδικοί να είναι δύσκολοι για τους περισσότερους χρήστες, εδώ θα εισαγάγω ένα καταπληκτικό χαρακτηριστικό-Διαχωρίστε τα δεδομένα of Kutools για Excel. Με αυτό το βοηθητικό πρόγραμμα, μπορείτε να χωρίσετε έναν μεγάλο πίνακα σε πολλούς πίνακες ανά στήλη κλειδιού ή αριθμό σειρών γρήγορα και εύκολα.

Συμβουλές:Για να το εφαρμόσετε Διαχωρίστε τα δεδομένα χαρακτηριστικό, πρώτα, πρέπει να κατεβάσετε το Kutools για Excelκαι, στη συνέχεια, εφαρμόστε τη λειτουργία γρήγορα και εύκολα.

Μετά την εγκατάσταση Kutools για Excel, κάντε το ως εξής:

1. Επιλέξτε το εύρος δεδομένων που θέλετε να χωρίσετε και, στη συνέχεια, κάντε κλικ Kutools Plus > Διαχωρίστε τα δεδομένα, δείτε το στιγμιότυπο οθόνης:

2. Στην Διαχωρισμός δεδομένων σε πολλά φύλλα εργασίας παράθυρο διαλόγου, καθορίστε τις ρυθμίσεις που χρειάζεστε:

(1.) Επιλέξτε Ειδική στήλη or Διορθώθηκαν οι σειρές από το Διαχωρισμός με βάση ενότητα όπως χρειάζεστε?

(2.) Καθορίστε το όνομα των νέων φύλλων εργασίας από το Κανόνες που αναπτυσσόμενη λίστα, μπορείτε να προσθέσετε το Πρόθεμα or Κατάληξη και στα ονόματα των φύλλων.

3. Στη συνέχεια, κάντε κλικ στο κουμπί Ok κουμπί και τώρα, ο μεγάλος πίνακας έχει χωριστεί σε πολλούς μικρούς πίνακες σε ένα νέο βιβλίο εργασίας. Δείτε στιγμιότυπα οθόνης:

Διαχωρίστε τον πίνακα σε πολλούς πίνακες ανά τιμή στήλης Διαχωρίστε τον πίνακα σε πολλούς πίνακες κατά αριθμό σειρών

Κάντε κλικ για λήψη του Kutools για Excel και δωρεάν δοκιμή τώρα!


Σχετικά άρθρα:

  • Διαχωρίστε ένα βιβλίο εργασίας για να διαχωρίσετε αρχεία Excel στο Excel
  • Ίσως χρειαστεί να διαχωρίσετε ένα μεγάλο βιβλίο εργασίας για να διαχωρίσετε αρχεία Excel με την αποθήκευση κάθε φύλλου εργασίας του βιβλίου εργασίας ως μεμονωμένο αρχείο Excel. Για παράδειγμα, μπορείτε να χωρίσετε ένα βιβλίο εργασίας σε πολλά μεμονωμένα αρχεία Excel και, στη συνέχεια, να παραδώσετε κάθε αρχείο σε διαφορετικό άτομο για να το χειριστείτε. Με αυτόν τον τρόπο, μπορείτε να κάνετε ορισμένα άτομα να χειρίζονται συγκεκριμένα δεδομένα και να διατηρούν τα δεδομένα σας ασφαλή. Αυτό το άρθρο θα εισαγάγει τρόπους για να χωρίσετε ένα μεγάλο βιβλίο εργασίας για να διαχωρίσετε αρχεία Excel με βάση κάθε φύλλο εργασίας.
  • Διαχωρίστε το πλήρες όνομα σε όνομα και επώνυμο στο Excel
  • Ας υποθέσουμε ότι έχετε έναν κατάλογο ονομάτων όπως φαίνεται στο πρώτο στιγμιότυπο οθόνης σε μία στήλη παρακάτω, και πρέπει να χωρίσετε το πλήρες όνομα στη στήλη του ονόματος, στη στήλη μεσαίου ονόματος και στη στήλη επωνύμου όπως φαίνεται στο παρακάτω στιγμιότυπο οθόνης. Ακολουθούν μερικές δύσκολες μέθοδοι που θα σας βοηθήσουν να λύσετε αυτό το πρόβλημα.
  • Διαχωρίστε τη λέξη ή τον αριθμό σε ξεχωριστά κελιά στο Excel
  • Εάν έχετε μια λίστα αριθμών ή λέξεων σε ένα φύλλο εργασίας και τώρα πρέπει να διαχωρίσετε τα περιεχόμενα του κελιού σε γράμματα σε διαφορετικά κελιά, όπως φαίνεται στο παρακάτω στιγμιότυπο οθόνης, πώς μπορείτε να αντιμετωπίσετε αυτήν την εργασία στο Excel;
  • Διαχωρίστε μια μεγάλη λίστα σε ίσες ομάδες στο Excel
  • Εάν έχετε μια μακρά λίστα δεδομένων που χρειάζονται για να χωριστούν σε πολλές ίσες ομάδες όπως φαίνεται στο παρακάτω στιγμιότυπο οθόνης, πώς θα μπορούσατε να αντιμετωπίσετε αυτήν την εργασία γρήγορα και εύκολα στο Excel;

 


  • Super Formula Bar (επεξεργαστείτε εύκολα πολλές γραμμές κειμένου και τύπου). Διάταξη ανάγνωσης (εύκολη ανάγνωση και επεξεργασία μεγάλου αριθμού κελιών). Επικόλληση σε φιλτραρισμένο εύρος...
  • Συγχώνευση κελιών / σειρών / στηλών και τήρηση δεδομένων · Περιεχόμενο διαχωρισμού κελιών Συνδυάστε διπλές σειρές και άθροισμα / μέσος όρος... Αποτροπή διπλών κυττάρων; Συγκρίνετε τα εύρη...
  • Επιλέξτε Διπλότυπο ή Μοναδικό Σειρές; Επιλέξτε Κενές σειρές (όλα τα κελιά είναι κενά). Σούπερ εύρεση και ασαφής εύρεση σε πολλά βιβλία εργασίας. Τυχαία επιλογή ...
  • Ακριβές αντίγραφο Πολλαπλά κελιά χωρίς αλλαγή της αναφοράς τύπου. Αυτόματη δημιουργία αναφορών σε πολλαπλά φύλλα? Εισαγωγή κουκκίδων, Πλαίσια ελέγχου και άλλα ...
  • Αγαπημένα και γρήγορη εισαγωγή τύπων, Σειρά, Διαγράμματα και Εικόνες; Κρυπτογράφηση κυττάρων με κωδικό πρόσβασης Δημιουργία λίστας αλληλογραφίας και στείλτε email ...
  • Εξαγωγή κειμένου, Προσθήκη κειμένου, Κατάργηση κατά θέση, Αφαιρέστε το διάστημα; Δημιουργία και εκτύπωση υποσύνολων σελιδοποίησης. Μετατροπή περιεχομένου και σχολίων μεταξύ κελιών...
  • Σούπερ φίλτρο (αποθηκεύστε και εφαρμόστε σχήματα φίλτρων σε άλλα φύλλα). Προηγμένη ταξινόμηση ανά μήνα / εβδομάδα / ημέρα, συχνότητα και άλλα. Ειδικό φίλτρο με έντονη, πλάγια ...
  • Συνδυάστε βιβλία εργασίας και φύλλα εργασίας; Συγχώνευση πινάκων βάσει βασικών στηλών. Διαχωρίστε τα δεδομένα σε πολλά φύλλα; Μαζική μετατροπή xls, xlsx και PDF...
  • Ομαδοποίηση συγκεντρωτικού πίνακα κατά αριθμός εβδομάδας, ημέρα εβδομάδας και πολλά άλλα ... Εμφάνιση ξεκλειδωμένων, κλειδωμένων κελιών με διαφορετικά χρώματα. Επισημάνετε τα κελιά που έχουν τύπο / όνομα...
kte καρτέλα 201905
  • Ενεργοποίηση επεξεργασίας και ανάγνωσης καρτελών σε Word, Excel, PowerPoint, Publisher, Access, Visio και Project.
  • Ανοίξτε και δημιουργήστε πολλά έγγραφα σε νέες καρτέλες του ίδιου παραθύρου και όχι σε νέα παράθυρα.
  • Αυξάνει την παραγωγικότητά σας κατά 50% και μειώνει εκατοντάδες κλικ του ποντικιού για εσάς κάθε μέρα!
κάτω μέρος γραφείου

 

Comments (13)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
Thank you very much.....
This comment was minimized by the moderator on the site
Super Sache

Frage:

Ist es möglich die Tabelle immer neu zu füllen und neu zu berechnen.
Bin absoluter anfänger. :-)
Danke im Voraus
This comment was minimized by the moderator on the site
Hello, Lukas,
I'm sorry, the methods in this article can't support to update the new data when the original data is changed.
So, you need to run the code again to get the latest data if there are changes in your data.
Thank you!
This comment was minimized by the moderator on the site
I can't get this macro to work (Split A Large Table Into Multiple Tables Based On Column Value With VBA Code)
My table has 5 columns and 639,165 rows. Is it too big?
This comment was minimized by the moderator on the site
Hello, Rebekah

If the data is too large, the code will not work perfectly.
Here, I recommend our Kutools for Excel' Split Data feature for you. With this feature, you can split large data to multiple sheets quickly and easily.
You can try it for 30 days freely. Please download it ffrom: https://www.extendoffice.com/download/kutools-for-excel.html
Please have a try, hope it can help you!
This comment was minimized by the moderator on the site
Hallo zusammen. Ich habe das gleiche Problem wie cGast - gibt es dazu eine Lösung?
This comment was minimized by the moderator on the site
Hi, Miriam,

The VBA code has been updated to a new one in this article, please try it again, if you have any other problem, please comment here. Thank you!
This comment was minimized by the moderator on the site
I tried "Split a large table into multiple tables based on the specific number of rows with VBA code" with my data of 103,000 rows split in groups of 15000 which should have returned 8 sheets, however it didnt work, it just produced 8 sheets with the headers only. but it does work when i use it with less that 10000rows. any help there?
This comment was minimized by the moderator on the site
Hello cguest,
Yes, as you said, the VBA code does not work correctlly when there are lots of data, here, I provide a new code, please try:
Sub Splitdatabyrows()
'Updated by Extendoffice 
Dim WorkRng As Range
Dim xRow As Range
Dim SplitRow As Integer
Dim xWs As Worksheet
Dim xTRg As Range
Dim xNTRg As Range
Dim xIER
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection


Set xTRg = Application.InputBox("Please select the header row:", xTitleId, "", Type:=8)
If TypeName(xTRg) = "Nothing" Then Exit Sub
Set WorkRng = Application.InputBox("Please select the data range(exclude the header row):", xTitleId, WorkRng.Address, Type:=8)
If TypeName(WorkRng) = "Nothing" Then Exit Sub


SplitRow = Application.InputBox("Split Row Num", xTitleId, Type:=1)
If SplitRow = 0 Then Exit Sub

Set xWs = WorkRng.Parent
Set xRow = WorkRng.Rows(1)
xIER = WorkRng.Rows.Count
xIER = WorkRng.Row + xIER - 1


Application.ScreenUpdating = False
For i = 1 To WorkRng.Rows.Count Step SplitRow
    resizeCount = SplitRow
    If (xIER - xRow.Row + 1) < SplitRow Then
        resizeCount = (xIER - xRow.Row + 1)
    End If
    xRow.Resize(resizeCount).Copy
    Set xWs = Application.Worksheets.Add(after:=Application.Worksheets(Application.Worksheets.Count))
    If xIER > (xRow.Row + SplitRow - 1) Then
        xWs.Name = xRow.Row & " - " & (xRow.Row + SplitRow - 1)
    ElseIf xIER = xRow.Row Then
        xWs.Name = xRow.Row
    Else
        xWs.Name = xRow.Row & " - " & xIER
    End If
    Application.ActiveSheet.Range("A1").PasteSpecial
    Set xNTRg = Application.ActiveSheet.Range("A1")
    xTRg.Copy
    xNTRg.Insert
    Set xRow = xRow.Offset(SplitRow)
Next
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub


Hope it can help you, Thank you!
This comment was minimized by the moderator on the site
"Teilen Sie eine große Tabelle basierend auf der spezifischen Anzahl von Zeilen mit VBA-Code in mehrere Tabellen auf"Funktioniert echt Super. Ist es möglich dass auch Verbundene Zellen erkannt und die Anzahl der Zeilen entsprechend angepasst wird so dass die Verbundenen Zellen beim Seitenumbruch nicht getrennt werden?
This comment was minimized by the moderator on the site
Если разбиваете по строкам и строк больше, чем 32 767 то поменяйте тип данных у переменных xIER и SplitRow с Integer на Long
This comment was minimized by the moderator on the site
Ich habe die erste Variante mit 456.913 Zeilen und 8 Spalten probiert - leider ohne dass irgendwas ausgeführt wurde.
This comment was minimized by the moderator on the site
Всем привет. Столкнулся с проблемой. У меня таблица из 7 колонок и 235000 строк. Макрос не разбивает на страницы. Вернее он страницы создает но они внутри пустые. Тестировал с меньшим количеством строк примерно 1000. Макрос срабатывал. Подскажите метод решения.
There are no comments posted here yet
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations