: Xl2000 Verwenden eines VBA-Makros zum Sortieren von Arrays in Excel

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 213818 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

In Microsoft Excel 2000 dafür gibt es keine direkte Methode zum Sortieren eines Array von Werten mit einer Microsoft Visual Basic für Applikationen-Makro oder Prozedur. Dieser Artikel beschreibt zwei verschiedene Algorithmen, die zum Sortieren von Arrays verwendet werden kann: die Auswahl sortieren und Bubble Sort .

Weitere Informationen

Microsoft bietet Programmierbeispiele für Abbildung nur ohne Gewährleistung oder konkludent, einschließlich, aber nicht beschränkt auf konkludenten Garantien der Handelsüblichkeit und/oder Eignung für einen bestimmten Zweck. Die zur Verfügung gestellten Makro- und Programmierungsbeispiele sollen lediglich exemplarisch die Funktionsweise des Beispiels aufzeigen. Spezialisten von Microsoft Support Services können bei Erläuterung die Funktionalität einer bestimmten Prozedur helfen, Sie werden ändert jedoch nicht Beispielen bieten Funktionen hinzugefügt oder Verfahren, um Ihren speziellen Anforderungen erstellen.
Wenn Sie Programmiererfahrung, beschränkt haben, sollten Sie ein Microsoft Certified Partner oder die Microsoft Advisory Services wenden. Weitere Informationen finden Sie auf diese Websites von Microsoft:

Microsoft Certified Partner - https://partner.microsoft.com/global/30000104

Microsoft-Sicherheitsempfehlung Services - http://support.microsoft.com/gp/advisoryservice

Weitere Informationen zu den Supportoptionen, die verfügbar sind und wie Sie Microsoft kontaktieren besuchen Sie in der folgenden Website: http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS

Methode 1: Auswahl sortieren

Obwohl eine Auswahl sortieren zwischen die einfachere Art Programm ist, ist es langsamer als Bubble Sort auf große Arrays der Daten ausführen.

Um eine Auswahl Art der ein Array mit zwischen 1 bis n Anzahl der Elemente durchzuführen, suchen Sie das größte Element von 1 bis n. Wenn dies nicht Element n ist, tauschen Sie das größte Element mit dem Element n. Dann Suchen Sie das größte Element von 1 bis n-1 und, falls dies nicht Element n-1 ist, exchange das größte Element mit dem Element n-1. Nächstes suchen Sie das größte Element von 1 zu n-2 und ist dies nicht Element n-2, exchange das größte Element mit dem Element n-2 und usw..

Der folgende Code ist ein Beispiel der ein Selection-Sortieren mit VBA Variant Type-Array.
  1. Geben oder fügen die folgenden in einem Modulblatt ein: Option Base 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. Das Makro ausgeführt wird, klicken Sie im Menü Extras , zeigen Sie auf Makro und klicken Sie auf Makros .
  3. Wählen Sie das SelectionSortMyArray-Makro, und klicken Sie dann auf Ausführen .

Methode 2: Bubble Sort

Einen Bubble Sort ist schwieriger zu programmieren, als die Auswahl sortieren, aber es ist schneller und effizienter mit größere Arrays der Daten ausgeführt.

Einen Bubble Sort durchführen, ergeben 1 bis n-1 Elemente im Array vergleichen Sie jedes Element mit dem nach (mit anderen Worten, Element 1 ist im Vergleich zu Element 2, Element 2 wird auf Element 3 verglichen). Wenn ein Element nach dem das Element größer ist, werden diese beiden Elemente ausgetauscht. Setzen Sie diesen Vorgang bis es keine weitere Austausch von Elementen sind. Der folgende Code ist ein Beispiel von einem Bubble-Sortieren mit VBA Variant Type-Array.
  1. Geben oder fügen Sie den folgenden Code in einem Modulblatt ein: Option Base 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. Das Makro ausgeführt wird, klicken Sie im Menü Extras , zeigen Sie auf Makro und klicken Sie auf Makros .
  3. Wählen Sie das SelectionSortMyArray-Makro, und klicken Sie dann auf Ausführen .
Hinweis : beide dieser Beispiele in aufsteigender Reihenfolge sortieren. Ändern, um eine Auswahl sortieren in absteigender Reihenfolge durchführen ">"in"<" in der folgenden Zeile der SelectionSort -Funktion:
If TempArray(j) > MaxVal Then
				
Durchführen einer Bubble Sort in absteigender Reihenfolge ändern ">" zu einer "<" in der folgenden Zeile der BubbleSort Funktion:
If TempArray(i) > TempArray(i + 1) Then
				

Eigenschaften

Artikel-ID: 213818 - Geändert am: Donnerstag, 23. November 2006 - Version: 3.5
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Excel 2000 Standard Edition
Keywords: 
kbmt kbdtacode kbhowto kbinfo kbprogramming KB213818 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 213818
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

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