XL2000: Τρόπος χρήσης της μακροεντολής Visual Basic για την ταξινόμηση πίνακες του Excel

Μεταφράσεις άρθρων Μεταφράσεις άρθρων
Αναγν. άρθρου: 213818 - Δείτε τα προϊόντα στα οποία αναφέρεται το συγκεκριμένο άρθρο.
Ανάπτυξη όλων | Σύμπτυξη όλων

Σε αυτήν τη σελίδα

Περίληψη

Στο Microsoft Excel 2000, δεν υπάρχει καμία μέθοδος απευθείας για την ταξινόμηση ενός πίνακα τιμών με ένα Microsoft Visual Basic for Applications μακροεντολή ή διαδικασία. Αυτό το άρθρο περιγράφει δύο διαφορετικούς αλγόριθμους που μπορείτε να χρησιμοποιήσετε για να ταξινομήσετε πίνακες: τοΕπιλογή ταξινόμησηςκαι τοΤαξινόμηση φυσαλίδας.

Περισσότερες πληροφορίες

Η Microsoft παρέχει παραδείγματα προγραμματισμού μόνο για επεξήγηση, χωρίς να παρέχει καμία εγγύηση, είτε σιωπηρή είτε ρητή, περιλαμβανομένων, ενδεικτικά, των σιωπηρών εγγυήσεων εμπορευσιμότητας ή/και καταλληλότητας για συγκεκριμένο σκοπό. Αυτό το άρθρο προϋποθέτει ότι είστε εξοικειωμένοι με τη γλώσσα προγραμματισμού που παρουσιάζεται, καθώς και με τα εργαλεία που χρησιμοποιούνται για τη δημιουργία και τον εντοπισμό σφαλμάτων διαδικασιών. Οι μηχανικοί υποστήριξης της Microsoft μπορούν να σας εξηγήσουν τη λειτουργικότητα μιας συγκεκριμένης διαδικασίας, αλλά δεν θα τροποποιήσουν αυτά τα παραδείγματα για να παράσχουν πρόσθετες λειτουργίες, ούτε θα δημιουργήσουν διαδικασίες, για να καλύψουν τις συγκεκριμένες ανάγκες σας.
Εάν δεν έχετε μεγάλη εμπειρία προγραμματισμού, ίσως χρειαστεί να επικοινωνήσετε με κάποιον πιστοποιημένο συνεργάτη της Microsoft (Microsoft Certified Partner) ή να χρησιμοποιήσετε τις συμβουλευτικές υπηρεσίες Microsoft Advisory Services. Για περισσότερες πληροφορίες, επισκεφθείτε αυτές τις τοποθεσίες της Microsoft στο Web:

Πιστοποιημένοι συνεργάτες της Microsoft -https://partner.microsoft.com/global/30000104

Συμβουλευτικές υπηρεσίες της Microsoft-http://support.Microsoft.com/GP/advisoryservice

Για περισσότερες πληροφορίες σχετικά με τις επιλογές υποστήριξης που είναι διαθέσιμες και τον τρόπο επικοινωνίας με τη Microsoft, επισκεφθείτε την ακόλουθη τοποθεσία της Microsoft στο Web:http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS

Μέθοδος 1: Επιλογή ταξινόμησης

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

Για να εκτελέσετε μια επιλογή Sort του πίνακα με μεταξύ 1 έως n πλήθος στοιχείων, εντοπίστε το στοιχείο μεγαλύτερο από 1 σε ν. Εάν δεν είναι στοιχείο n, Ανταλλάξτε το μεγαλύτερο στοιχείο με το στοιχείο n. Στη συνέχεια, εντοπίστε το στοιχείο μεγαλύτερο από 1 έως n-1 και, αν αυτό είναι το στοιχείο n-1, Ανταλλάξτε το μεγαλύτερο στοιχείο με το στοιχείο n-1. Στη συνέχεια, εντοπίστε το στοιχείο μεγαλύτερο από 1 έως n-2 και, αν αυτό είναι το στοιχείο n-2, Ανταλλάξτε το μεγαλύτερο στοιχείο με το στοιχείο n-2 και ούτω καθεξής.

Ακολουθεί ένα παράδειγμα για μια επιλογή ταξινόμησης με έναν πίνακα τύπου Variant της Visual Basic.
  1. Πληκτρολογήστε ή επικολλήστε το ακόλουθο σε ένα φύλλο λειτουργικής μονάδας: επιλογή βάσης 1
    Function SelectionSort(TempArray As Variant)
        Dim MaxVal As Variant
        Dim MaxIndex As Integer
        Dim i, j As Integer
    
        ' Step through the elements in the array starting with the
        ' last element in the array.
        For i = UBound(TempArray) To 1 Step -1
    
            ' Set MaxVal to the element in the array and save the
            ' index of this element as MaxIndex.
            MaxVal = TempArray(i)
            MaxIndex = i
    
            ' Loop through the remaining elements to see if any is
            ' larger than MaxVal. If it is then set this element
            ' to be the new MaxVal.
            For j = 1 To i
                If TempArray(j) > MaxVal Then
                    MaxVal = TempArray(j)
                    MaxIndex = j
                End If
            Next j
    
            ' If the index of the largest element is not i, then
            ' exchange this element with element i.
            If MaxIndex < i Then
                TempArray(MaxIndex) = TempArray(i)
                TempArray(i) = MaxVal
            End If
        Next i
    
    End Function
    
    Sub SelectionSortMyArray()
        Dim TheArray As Variant
    
        ' Create the array.
        TheArray = Array(15, 8, 11, 7, 33, 4, 46, 19, 20, 27, 43, 25, 36)
    
        ' Sort the Array and display the values in order.
        SelectionSort TheArray
        For i = 1 To UBound(TheArray)
            MsgBox TheArray(i)
        Next i
    
    End Sub
    					
  2. Για να εκτελέσετε τη μακροεντολή, κάντε κλικ στοΕργαλείαμενού, σημείοMacro, και στη συνέχεια κάντε κλικ στο κουμπίΜακροεντολές.
  3. Επιλέξτε τη μακροεντολή SelectionSortMyArray και, στη συνέχεια, κάντε κλικ στο κουμπίΕκτέλεση.

Μέθοδος 2: Ταξινόμηση φυσαλίδας

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

Για να πραγματοποιήσετε μια ταξινόμηση φυσαλίδας, Αξιολογήστε 1 έως n-1 στοιχείων του πίνακα, όπου μπορείτε να συγκρίνετε κάθε στοιχείο με τη μία μετά από αυτήν (με άλλα λόγια, το στοιχείο 1 συγκρίνεται με το στοιχείο 2, στοιχείο 2 συγκρίνεται με το στοιχείο 3 και ούτω καθεξής). Εάν ένα στοιχείο είναι μεγαλύτερο από το στοιχείο μετά από αυτό, γίνεται ανταλλαγή αυτά τα δύο στοιχεία. Συνεχίστε αυτήν τη διαδικασία έως ότου δεν έχουν καμία περισσότερες ανταλλαγές στοιχείων. Ακολουθεί ένα παράδειγμα μιας ταξινόμησης φυσαλίδας με έναν πίνακα τύπου Variant της Visual Basic.
  1. Πληκτρολογήστε ή επικολλήστε τον ακόλουθο κώδικα στο φύλλο λειτουργικής μονάδας: επιλογή βάσης 1
    Function BubbleSort(TempArray As Variant)
        Dim Temp As Variant
        Dim i As Integer
        Dim NoExchanges As Integer
    
        ' Loop until no more "exchanges" are made.
        Do
            NoExchanges = True
    
            ' Loop through each element in the array.
            For i = 1 To UBound(TempArray) - 1
    
                ' If the element is greater than the element
                ' following it, exchange the two elements.
                If TempArray(i) > TempArray(i + 1) Then
                    NoExchanges = False
                    Temp = TempArray(i)
                    TempArray(i) = TempArray(i + 1)
                    TempArray(i + 1) = Temp
                End If
            Next i
        Loop While Not (NoExchanges)
    
    End Function
    
    Sub BubbleSortMyArray()
        Dim TheArray As Variant
    
        ' Create the array.
        TheArray = Array(15, 8, 11, 7, 33, 4, 46, 19, 20, 27, 43, 25, 36)
    
        ' Sort the Array and display the values in order.
        BubbleSort TheArray
        For i = 1 To UBound(TheArray)
            MsgBox TheArray(i)
        Next i
    End Sub
    					
  2. Για να εκτελέσετε τη μακροεντολή, κάντε κλικ στοΕργαλείαμενού, σημείοMacro, και στη συνέχεια κάντε κλικ στο κουμπίΜακροεντολές.
  3. Επιλέξτε τη μακροεντολή SelectionSortMyArray και, στη συνέχεια, κάντε κλικ στο κουμπίΕκτέλεση.
ΣΗΜΕΙΩΣΗ: Το δύο από αυτά τα παραδείγματα ταξινομούνται σε αύξουσα σειρά. Για να εκτελέσετε μια επιλογή ταξινόμηση με φθίνουσα σειρά, αλλαγή">"προς"<" in="" the="" following="" line="" of="" the=""></">SelectionSortFunction:
If TempArray(j) > MaxVal Then
				
Για να εκτελέσετε μια φυσαλίδα ταξινόμηση με φθίνουσα σειρά, αλλαγή">" σε μια "<" in="" the="" following="" line="" of="" the=""></">BubbleSortFunction:
If TempArray(i) > TempArray(i + 1) Then
				
Σημείωση Αυτό είναι ένα άρθρο «ΤΑΧΕΙΑΣ ΔΗΜΟΣΙΕΥΣΗΣ» που δημιουργήθηκε απευθείας από τον οργανισμό υποστήριξης της Microsoft. Οι πληροφορίες που περιλαμβάνονται σε αυτό το άρθρο, παρέχονται ως απόκριση σε θέματα που προκύπτουν. Ως αποτέλεσμα της ταχύτητας διάθεσής του, το υλικό ενδέχεται να έχει τυπογραφικά λάθη και να αναθεωρηθεί ανά πάσα στιγμή χωρίς ειδοποίηση. Ανατρέξτε στους Όρους χρήσης για άλλα ζητήματα.

Ιδιότητες

Αναγν. άρθρου: 213818 - Τελευταία αναθεώρηση: Δευτέρα, 27 Σεπτεμβρίου 2010 - Αναθεώρηση: 1.0
Οι πληροφορίες σε αυτό το άρθρο ισχύουν για:
  • Microsoft Excel 2000 Standard Edition
Λέξεις-κλειδιά: 
kbdtacode kbhowto kbinfo kbprogramming kbmt KB213818 KbMtel
Μηχανικά μεταφρασμένο
ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης.
Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη:213818

Αποστολή σχολίων

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com