Ταξινόμηση των φύλλων εργασίας σε ένα βιβλίο εργασίας χρησιμοποιώντας VBA στο Microsoft Excel

Anonim

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

Στο συνημμένο βιβλίο εργασίας, υπάρχουν δύο ενότητες:-

Ενότητα 1 περιέχει τη μακροεντολή "SortWorksheets" που έχει αντιστοιχιστεί στο κουμπί "Submit" στο φύλλο "Macro".

Αυτή η μακροεντολή ταξινομεί όλα τα φύλλα εργασίας εκτός από το πρώτο φύλλο εργασίας που είναι το κύριο φύλλο που ονομάζεται "Μακροεντολή".

Όταν ο χρήστης κάνει κλικ στο κουμπί "Υποβολή", όλα τα φύλλα μετά το φύλλο "Μακροεντολή" θα ταξινομηθούν σε αύξουσα ή φθίνουσα σειρά, όπως τα έχει επιλέξει ο χρήστης στο σύνθετο πλαίσιο.

Ενότητα 2 περιέχει δύο μακροεντολές "AscendingSortOfWorksheets" και "DecendingSortOfWorksheets". Με την εκτέλεση της μακροεντολής "AscendingSortOfWorksheets", θα ταξινομήσει όλα τα φύλλα εργασίας που υπάρχουν στο βιβλίο εργασίας με αύξουσα σειρά. Κατά την εκτέλεση της μακροεντολής "DecendingSortOfWorksheets", θα ταξινομήσει όλα τα φύλλα εργασίας που υπάρχουν στο βιβλίο εργασίας με φθίνουσα σειρά.

Λογική εξήγηση

Ο αλγόριθμος ταξινόμησης φυσαλίδων χρησιμοποιείται για την ταξινόμηση των φύλλων εργασίας στο βιβλίο εργασίας.

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

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

Για την επίτευξη αυτού του στόχου, χρησιμοποιήσαμε τον αλγόριθμο ταξινόμησης φούσκας για τη διαλογή των φύλλων εργασίας.

Επεξήγηση κώδικα

Μακροεντολή SortWorksheets

Αυτή η μακροεντολή θα εκτελεστεί όταν ο χρήστης κάνει κλικ στο κουμπί υποβολής. Αυτή η μακροεντολή θα ταξινομήσει όλα τα φύλλα εργασίας στο βιβλίο εργασίας με τα ονόματά τους εκτός από το πρώτο φύλλο εργασίας στο βιβλίο εργασίας. Ανάλογα με την τιμή που έχει επιλέξει ο χρήστης στο σύνθετο πλαίσιο, θα ταξινομήσει τα φύλλα εργασίας με αύξουσα ή φθίνουσα σειρά.

Για την προσθήκη σύνθετου πλαισίου, ακολουθήστε τα παρακάτω βήματα:-

  1. Μεταβείτε στην καρτέλα Προγραμματιστής> Κάντε κλικ στο Εισαγωγή> Κάντε κλικ στο εικονίδιο σύνθετου πλαισίου υπό έλεγχο φόρμας

  1. Κάντε δεξί κλικ στο σύνθετο πλαίσιο και κάντε κλικ στο στοιχείο ελέγχου μορφής.

  1. Μεταβείτε στην καρτέλα ελέγχου, εκχωρήστε το στοιχείο και συνδέστε το σύνθετο πλαίσιο με το κελί XFC1.

ComboBoxValue = Εύρος ("XFC1"). Τιμή

Το σύνθετο πλαίσιο στο φύλλο εργασίας "Μακροεντολή" συνδέεται με το κελί XFC1. Έτσι, για να λάβετε τιμή από το κελί XFC1, χρησιμοποιείται η μεταβλητή ComboBoxValue.

Για i = 2 To SCount - 1

Ο βρόχος FOR ξεκινά με τη μεταβλητή i, η τιμή ξεκινά από το 2 καθώς θέλουμε να εξαιρέσουμε το πρώτο φύλλο εργασίας του βιβλίου εργασίας από τη διαλογή.

Αν ComboBoxValue = 1 Τότε

Η συνθήκη IF χρησιμοποιείται για τον έλεγχο κατάταξης κατά αύξουσα ή φθίνουσα σειρά. Εάν η τιμή ComboBoxValue είναι 1, τότε ταξινομήστε σε αύξουσα σειρά κατά τα άλλα φθίνουσα σειρά.

Τα φύλλα εργασίας ταξινομούνται με αύξουσα σειρά

Τα φύλλα εργασίας ταξινομούνται κατά φθίνουσα σειρά

AscendingSortOfWorksheets και DecendingSortOfWorksheets

Οι μακροεντολές AscendingSortOfWorksheets και DecendingSortOfWorksheets μπορούν να εκτελεστούν πατώντας το πλήκτρο συντόμευσης Alt + F8 ή Μεταβείτε στην καρτέλα Προγραμματιστής> Κάντε κλικ στη Μακροεντολή> επιλέγοντας τη μακροεντολή και κάντε κλικ στην εκτέλεση. Θα ταξινομήσουν όλα τα φύλλα εργασίας που υπάρχουν μέσα στο βιβλίο εργασίας. Αυτές οι μακροεντολές μπορούν να εκτελεστούν και σε άλλα βιβλία εργασίας.

Τα φύλλα εργασίας ταξινομούνται μετά την εκτέλεση της μακροεντολής AscendingSortOfWorksheets

Φύλλα εργασίας ταξινομημένα με αύξουσα σειρά Μακροεντολή DecendingSortOfWorksheets

Ακολουθήστε παρακάτω για τον κωδικό

 Sub AscendingSortOfWorksheets () 'Ταξινόμηση φύλλων εργασίας σε βιβλίο εργασίας με αύξουσα σειρά Dim SCount, i, j As Integer' Για απενεργοποίηση ενημερώσεων οθόνης Application.ScreenUpdating = Λάθος 'Λήψη συνολικού αριθ. των σελίδων στο βιβλίο εργασίας SCount = Φύλλα εργασίας. Αριθμός 'Έλεγχος συνθήκης εάν ο αριθμός των φύλλων εργασίας είναι μεγαλύτερος από 1, Εάν ο αριθμός είναι ένας, τότε βγείτε από τη διαδικασία Εάν SCount = 1 Στη συνέχεια, εξέλθετε από το Sub' Using Bubble sort as sorting algorithm 'Looping through all worksheets For i = 1 To SCount - 1 'Συγκρίνοντας το επιλεγμένο όνομα φύλλου με άλλα φύλλα για τη μετακίνηση του επιλεγμένου φύλλου στην κατάλληλη θέση Για j = i + 1 στο SCount If Worksheets (j). Όνομα  Φύλλα εργασίας (i). Όνομα Στη συνέχεια φύλλα εργασίας (j). Μετακίνηση πριν: = Φύλλα εργασίας (i) Τέλος αν Επόμενο j Επόμενο i Τέλος υπο 

Αν σας άρεσε αυτό το blog, μοιραστείτε το με τους φίλους σας στο Facebook. Επίσης, μπορείτε να μας ακολουθήσετε στο Twitter και το Facebook.

Θα θέλαμε πολύ να σας ακούσουμε, ενημερώστε μας πώς μπορούμε να βελτιώσουμε το έργο μας και να το κάνουμε καλύτερο για εσάς. Γράψτε μας στον ιστότοπο email