VBA Sort Array

Αυτό το σεμινάριο θα δείξει πώς να ταξινομείτε τιμές σε έναν πίνακα στο VBA

Ταξινόμηση ενός μονοδιάστατου πίνακα χρησιμοποιώντας έναν βρόχο

Η ταξινόμηση ενός πίνακα απαιτεί λίγο χειρισμό δεδομένων χρησιμοποιώντας βρόχους, μεταβλητές και προσωρινούς πίνακες.

  • Πρέπει πρώτα να συμπληρώσετε τον πίνακα με τις τιμές σας
  • Στη συνέχεια, πρέπει να κάνετε βρόχο στον πίνακα δύο φορές! Μία φορά για να λάβετε μια τιμή από τον πίνακα τρέχοντος στοιχείου και όσο είστε ακόμα σε αυτόν τον βρόχο, για να πάρετε την τιμή του επόμενου στοιχείου στον πίνακα.
  • Στη συνέχεια, πρέπει να συγκρίνετε τα στοιχεία - και να μετακινήσετε το 2ο στη θέση του πρώτου εάν το 2ο είναι αλφαβητικά ΠΡΙΝ το 1ο.

Το παρακάτω παράδειγμα δείχνει αυτή τη διαδικασία.

1234567891011121314151617181920212223 Sub SortAnArray ()Dim i As Long«Ορίστε τον πίνακαDim strName () Ως παραλλαγήDim Temp As Variant"συμπληρώστε τον πίνακαstrName () = Array ("Bob Smith", "John Davies", "Fred Jones", "Steve Jenkins", "Bob Williams")"βρόχο μέσα από το δεσμό του πίνακα και να πάρει το πρώτο όνομαΓια i = LBound (strName) To UBound (strName) - 1«βυθιστείτε ξανά και ελέγξτε αν το επόμενο όνομα είναι αλφαβητικά πριν ή μετά το πρωτότυποΓια j = i + 1 προς UBound (όνομα ονόματος)Αν UCase (strName (i))> UCase (strName (j)) Τότε"εάν το όνομα πρέπει να μετακινηθεί πριν από το προηγούμενο όνομα, προσθέστε σε έναν πίνακα tempTemp = strName (j)«αλλάξτε τα ονόματαstrName (j) = strName (i)strName (i) = TempΤέλος εανΕπόμενο jΕπόμενο i'Έξοδος του πίνακα μέσω ενός πλαισίου μηνύματοςMsgBox Join (strName (), vbCrLf)Τέλος υπο

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

Μπορείτε επίσης να ταξινομήσετε τον πίνακα προς την άλλη κατεύθυνση - π.χ.: Z σε A αλλάζοντας αυτήν τη γραμμή κώδικα

1 Εάν UCase (strName (i))> UCase (strName (j)) Τότε

σε αυτήν τη γραμμή κώδικα

1 Εάν UCase (strName (i)) <UCase (strName (j)) Τότε

Στη συνέχεια, θα λάβετε το ακόλουθο πλαίσιο μηνυμάτων.

Θα βοηθήσει στην ανάπτυξη του τόπου, μοιράζονται τη σελίδα με τους φίλους σας

wave wave wave wave wave