Ταξινόμηση VBA - Συμβουλές για το Excel

Πίνακας περιεχομένων

Excel VBA Macro για ταξινόμηση δεδομένων. Δεν μου αρέσει ο τρόπος με τον οποίο η μακροεντολή καταγράφει επιπλέον κώδικα για ταξινόμηση. Η ταξινόμηση στο Excel VBA πρέπει να είναι απλή. Μία γραμμή κώδικα, με τη στήλη προς ταξινόμηση, με ποιον τρόπο (αύξουσα ή φθίνουσα) και υπάρχει μια κεφαλίδα.

Δες το βίντεο

  • Η εγγραφή μακροεντολών του Excel δεν κάνει καλή δουλειά με την ταξινόμηση των εγγραφών.
  • Υπό την προϋπόθεση ότι τα δεδομένα σας μπορούν να επιλεγούν χρησιμοποιώντας το Ctrl + * (γνωστό ως Τρέχουσα Περιοχή)
  • Υπό την προϋπόθεση ότι δεν ταξινομείτε ανά χρώμα ή εικονίδιο ή περισσότερα από τρία επίπεδα
  • Χρησιμοποιήστε το παλιό σχολικό εύρος (). CurrentRegion.Sort μέθοδο στο Excel

Μεταγραφή βίντεο

Μάθετε το Excel από το MrExcel Podcast, Episode 2093: Sorting With VBA

Γεια σας, καλώς ήρθατε στο netcast, είμαι ο Bill Jelen. Η σημερινή ερώτηση του Τζέιμς στο Χάντσβιλ. James, χρησιμοποίησα τη συσκευή εγγραφής μακροεντολών για να καταγράψω τη δράση ταξινόμησης δεδομένων. Ας πούμε λοιπόν ότι ο James χρειάστηκε να ταξινομήσει αυτά τα δεδομένα ανά τομέα και πελάτες. Έτσι βγαίνετε εδώ στην καρτέλα Προβολή, Μακροεντολές, Εγγραφή νέας μακροεντολής, SortMyReports, Συντόμευση πλήκτρου Ctrl - Θα πληκτρολογήσω Shift + S εκεί και κάντε κλικ στο OK. Εντάξει, λοιπόν από εδώ κάνουμε: Δεδομένα, Ταξινόμηση και θέλουμε να πούμε ότι θέλουμε Ταξινόμηση κατά τομέα και, στη συνέχεια, Προσθήκη επιπέδου και Ταξινόμηση κατά πελάτη και κάντε κλικ στο OK. Κάτω στην κάτω αριστερή γωνία κάνουμε κλικ στο Διακοπή εγγραφής. Εντάξει, έτσι είναι. Φαίνεται ότι έχει δουλέψει, σωστά;

Αλλά εδώ είναι το πρόβλημα: αύριο θα έχετε περισσότερα δεδομένα ή λιγότερα δεδομένα ή, ξέρετε, οτιδήποτε. Και αυτό το Recorded Macro είναι απλώς φρικτό. Ας ρίξουμε μια ματιά, θα κάνω Alt + F8 και ρίξτε μια ματιά στο SortMyReport, θα το επεξεργαστεί. Εντάξει, και αυτά είναι όλα όσα ηχογράφησαν έτσι τα SortFields. Καθαρίστε, και στη συνέχεια δημιούργησαν ένα νέο είδος με το SortField. Προσθέστε και είναι κωδικοποιημένοι, και υπάρχουν 568 σειρές και όλα τα πράγματα.

Τώρα ταξινόμησα την ημέρα, ήμουν πολύ, πολύ εύκολος. Εντάξει, και στη συνέχεια στο Excel 2007 πρόσθεσαν το Ταξινόμηση κατά εικονίδιο, Ταξινόμηση κατά χρώμα, Ταξινόμηση κατά χρώμα γραμματοσειράς, τη δυνατότητα να έχουν 15 ταξινομήσεις επιπέδων και όλα μόλις έγιναν πραγματικά, πραγματικά τρελά. Έτσι, δεν χρησιμοποιώ πλέον το Recorded Macro. Μόλις πάω παλιό σχολείο.

Τώρα, θα επιστρέψω στο Excel. Εδώ είναι οι κανόνες για να λειτουργήσει αυτό το παλιό σχολείο, εντάξει. Επικεφαλίδα πάνω από κάθε στήλη: αυτή η επικεφαλίδα πρέπει να είναι σε μία σειρά και όχι σε δύο σειρές. Εάν έχετε τίτλους εκεί πάνω και είναι καλό να έχετε τίτλους εκεί. Χρειάζεστε μια εντελώς κενή σειρά μεταξύ των τίτλων σας και της πρώτης επικεφαλίδας. Αν έχετε σημειώσεις στη δεξιά πλευρά: η σύζυγός σας καλεί με μια λίστα παντοπωλείων, "Γεια σου, μέλι, σταματήστε στο δρόμο για το σπίτι. Πάρτε γάλα, αυγά και βότκα. " Πρέπει να υπάρχει μια εντελώς κενή στήλη μεταξύ των δεδομένων σας και αυτού. Και αν υπάρχουν σημειώσεις στο κάτω μέρος, βεβαιωθείτε ότι υπάρχει μια εντελώς κενή σειρά μεταξύ του τελευταίου bit δεδομένων και αυτών των σημειώσεων.

Ολόκληρος ο στόχος μου είναι να είμαστε σε θέση να έρθουμε σε οποιοδήποτε κελί: στην επάνω αριστερή γωνία κελί αυτά τα δεδομένα και πατήστε Ctrl + * και θα επιλέξει τα δεδομένα που θα ταξινομηθούν. Τώρα, θα πατήσω το Ctrl +. που μας οδηγεί σε αυτήν τη γωνία και μετά Ctrl +. θα μας οδηγήσει στην κάτω δεξιά γωνία, Ctrl +. μας οδηγεί στην κάτω αριστερή γωνία. Εντάξει, οπότε αν το Ctrl + * θα επιλέξει σωστά τα δεδομένα σας, τότε όλα είναι υπέροχα. Εάν βάλετε τη λίστα των ειδών παντοπωλείου σας στη στήλη Η και βλέπουμε να έρχονται εδώ και Ctrl + *, λοιπόν, ταξινομούμε τη λίστα παντοπωλείων ως μέρος του πράγμα και η λίστα των ειδών παντοπωλείου σας θα βγει. Ή θα αναιρέσουμε: αν αυτή η σειρά δεν είναι εδώ, τώρα κάνουμε Ctrl + *, δείτε ότι τώρα - θα είναι ανίδεοι γιατί δεν έχουν πλέον επικεφαλίδες, εντάξει;

Έτσι, εάν πρόκειται να χρησιμοποιήσετε τον κωδικό μου, βεβαιωθείτε ότι όλοι αυτοί οι κανόνες είναι αληθινοί: χωρίς ταξινόμηση του χρώματος μου, χωρίς ταξινόμηση του εικονιδίου μου, 3 ή λιγότερα επίπεδα ταξινόμησης. Αναίρεση, εντάξει. Εδώ λοιπόν γνωρίζουμε: γνωρίζουμε ότι κάθε μέρα τα δεδομένα μας θα ξεκινούν στο A5. Αν δεν γνωρίζουμε πόσες σειρές ή πόσες - ακόμη και πόσες στήλες μπορεί να έχουμε. Δεν μπορώ να φανταστώ μια κατάσταση όπου οι στήλες αλλάζουν, αλλά σίγουρα ο αριθμός των σειρών πρόκειται να αλλάξει. Λοιπόν, Alt + F11, απλώς πρόκειται να ξεκινήσουμε από αυτό το πάνω γωνιακό κελί. Έτσι, το Range, στην περίπτωσή μου είναι "A5" .CurrentRegion. Η τρέχουσα περιοχή είναι αυτή η φοβερή οικοδομική ιδιοκτησία που λέει ότι θα πατήσουμε το πλήκτρο Ctrl + Shift + * και ό, τι περιλαμβάνεται εκεί είναι αυτό που πρόκειται να ταξινομηθεί. Και το κάνουμε. Ταξινόμηση. . Ταξινόμηση, εντάξει.

Τώρα, εδώ είναι το πράγμα. Αν θέλετε να κάνετε ένα είδος επιπέδου είναι εύκολο: Key1: =. : = και απλώς λέμε ότι πρόκειται να είναι Range - Ω ξεχάσω τι είναι. Ήταν ο τομέας, πού είναι ο τομέας; Ο τομέας είναι στη στήλη Γ. Έτσι, C5 στην περίπτωσή μου, Εύρος ("C5") και, στη συνέχεια, Order1: = xlΑύξηση. Πιέστηκα το πλήκτρο Κάτω βέλος εκεί και στη συνέχεια Tab Εντάξει τώρα, θα μπορούσα να συνεχίσω προς τα δεξιά, αλλά δεν πρόκειται να το κάνω. Θα πάω σε μια νέα γραμμή, ώστε ο χώρος, να υπογραμμιστεί για να πάει σε μια νέα γραμμή, συνεχίζει αυτή τη γραμμή κώδικα, εντάξει; Και αν έχω ένα είδος δεύτερου επιπέδου: Key2: = και σε αυτήν την περίπτωση θέλω να ταξινομήσω κατά πελάτη που βρίσκεται στη στήλη D, έτσι D5. Και μετά, Order2: xlAscending. Πανεμορφη.

Δεν έχω είδος τρίτου επιπέδου αλλά αν το κάνατε, θα ήταν το Key3 και μετά το Order3. Και μετά αυτό το επόμενο, αυτό που πρέπει να κάνετε είναι Header, εντάξει; Λοιπόν, Header: = xl Μαντέψτε εκεί όπου έχετε πολλά προβλήματα. Και έτσι θα πούμε xl Ναι, σίγουρα ως Header. Ακόμα και στις παλιές μέρες, το Macro Recorder θα χρησιμοποιούσε το xlGuess. Μισώ το Excel να μαντέψει.

Αυτό είναι. Μια γραμμή κώδικα, αυτό είναι το μόνο που έχετε να κάνετε και θα λειτουργεί με περισσότερες σειρές, λιγότερες σειρές. Είναι ένα όμορφο, όμορφο πράγμα. Εντάξει, οπότε θα επιστρέψουμε εδώ στο Excel. Το Ctrl + Shift + S εξακολουθεί να είναι αυτό που έχει εκχωρηθεί. Τώρα - Εάν μόλις μεταβείτε στο VBA και το πληκτρολογήσετε εσείς, μπορείτε να μεταβείτε στο Alt + F8, να βρείτε το όνομα της μακροεντολής σας, να κάνετε κλικ στο Επιλογές και να πληκτρολογήσετε Ctrl + Shift + S εκεί ή μπορούμε ακόμη να το αντιστοιχίσουμε σε Πλήκτρο συντόμευσης εδώ στη γραμμή εργαλείων γρήγορης πρόσβασης. Κάντε δεξί κλικ, Προσαρμογή γραμμής εργαλείων γρήγορης πρόσβασης όπου επιλέγω από τις μακροεντολές μας. Έχω μια μακροεντολή που ονομάζεται SortMyReport, θα κάνω κλικ Προσθήκη - Μισώ το μικρό διάγραμμα ροής εκεί. Θα το τροποποιήσουμε και θα ήθελα πολύ να υπάρχει κάποιο είδος A έως Z, αλλά φυσικά δεν υπάρχει. Ίσως αυτό το βέλος που ξέρει, ποιος ξέρει, απλά επιλέξτε οτιδήποτε.Η μαγική μπάλα 8, δεν ξέρω. Θα επιλέξω αυτόν τον μικρό τύπο εδώ, κάντε κλικ στο OK, κάντε κλικ στο OK Εντάξει, έτσι τώρα τα δεδομένα μας Ταξινομούνται κατά Ημερομηνία, επιλέγω - και δεν έχει σημασία τι θα επιλέξω. Πάντα πηγαίνει πίσω και ταξινομεί από το A5, κάνω κλικ στον μικρό άντρα και τα δεδομένα μου ταξινομούνται ανά τομέα, εντός τομέα, ανά πελάτη. Λειτουργεί υπέροχα, εντάξει;

Αν λοιπόν είστε οπαδός του Macro Recorder, σας ευχαριστώ θερμά. Όμως, ο κώδικας Macro Recorder αυτές τις μέρες για ταξινόμηση-ταξινόμηση σε VBA είναι πολύ πιο απλός. για να επιστρέψετε, απλώς χρησιμοποιήστε ουσιαστικά αυτήν, μία γραμμή κώδικα.

Λοιπόν, αυτό είναι συνήθως το σημείο όπου προσπαθώ να σας ζητήσω να αγοράσετε αυτό το βιβλίο, αλλά σήμερα νομίζω ότι πρέπει να ρίξετε μια ματιά σε αυτό το βιβλίο: Excel 2016 VBA και Macros από την Tracy και εγώ. Ουάου! Κοίτα αυτό. Δεν συνειδητοποίησα ότι υπάρχει μια έκδοση σε άλλη γλώσσα. Θα σας προωθήσουμε πλήρως την καμπύλη εκμάθησης μακροεντολών από την εγγραφή της πρώτης σας μακροεντολής στον κώδικα που χρειάζεστε.

Λοιπόν, απλή ολοκλήρωση για σήμερα: Η εγγραφή μακροεντολών του Excel δεν κάνει καλή δουλειά με την εγγραφή, ταξινόμηση: υπό την προϋπόθεση ότι τα δεδομένα σας μπορούν να επιλεγούν χρησιμοποιώντας το Ctrl + * που είναι γνωστό ως η τρέχουσα περιοχή, υπό την προϋπόθεση ότι δεν ταξινομείτε σαν χρώμα ή εικονίδιο ή περισσότερα από τρία επίπεδα, απλώς χρησιμοποιήστε το παλιό σχολείο Range (). CurrentRegion.Sort μέθοδος στο VBA για ταξινόμηση.

Θέλω να ευχαριστήσω τον James που έστειλε αυτήν την ερώτηση. Θέλω να σας ευχαριστήσω που σταματήσατε. Θα σας δούμε την επόμενη φορά για ένα άλλο netcast από.

Λήψη αρχείου

Κατεβάστε το δείγμα αρχείου εδώ: Podcast2093.xlsm

ενδιαφέροντα άρθρα...