Excel 2000: Het gebruik van een Visual Basic-Macro met een array sorteren in Excel

Vertaalde artikelen Vertaalde artikelen
Artikel ID: 213818 - Bekijk de producten waarop dit artikel van toepassing is.
Alles uitklappen | Alles samenvouwen

Op deze pagina

Samenvatting

In Microsoft Excel 2000 is er geen directe methode voor het sorteren van een array van waarden met een Microsoft Visual Basic for Applications-macro of procedure. In dit artikel worden twee verschillende algoritmen die u gebruiken kunt om te sorteren arrays: deSelectie sorterenen deBel sorteren.

Meer informatie

Microsoft biedt program meer voorbeelden ter illustratie alleen, zonder garantie of impliciete, met inbegrip van maar niet beperkt tot, de impliciete garanties van verkoopbaarheid en/of geschiktheid voor een bepaald doel. In dit artikel wordt ervan uitgegaan dat u bekend bent met de programmeer taal worden opgespoord en de hulp programma's en procedures voor fout opsporing. Microsoft support professionals kunnen helpen verklaren de functionaliteit van een bepaalde procedure, maar ze zal niet deze voorbeelden om extra functionaliteit of samens tellen van procedures om te voldoen aan uw specifieke behoeften aanpassen.
Als u zoveel program meer ervaring hebt, kunt u contact opnemen met een Microsoft Certified Partner of Microsoft Advisory Services. Meer informatie vindt u op deze Microsoft-websites:

Microsoft Certified Partners-https://partner.Microsoft.com/Global/30000104

Microsoft Advisory Services-http://support.Microsoft.com/gp/advisoryservice

Ga naar de volgende Microsoft-website voor meer informatie over de ondersteuningsopties die beschikbaar zijn en hoe u contact kunt opnemen met Microsoft:http://support.Microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS

Methode 1: Selectie sorteren

Hoewel een selectie sorteren onder gemakkelijker enigermate te programmeren, krijgt trager dan de bel sorteren op grote gegevens matrices.

Een selectie sorteren van een matrix met tussen 1 tot n aantal elementen voeren de grootste element van 1 tot en met n te zoeken. Als dit geen element n, wisselen de grootste element met n-element. Vervolgens zoekt de grootste element van 1 tot n-1 en als dit geen element n-1 is, wisselen de grootste element met element n-1. Zoek vervolgens de grootste element van 1 tot n-2 en, als dit is geen element n-2, wisselen de grootste element met element n-2, enzovoort.

Hier volgt een voorbeeld van een selectie sorteren met een Visual Basic-Variant type array.
  1. Typ of plak de volgende tekst in een module werk blad: 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. De macro wilt uitvoeren, klikt u op deHulp programma'shet menuMacro, en klik vervolgens opMacro's.
  3. Selecteer de macro SelectionSortMyArray en klik vervolgens opUitvoeren.

Methode 2: Bel sorteren

Bel sorteren is moeilijker dan het sorteren selectie programma, maar krijgt sneller en efficiënter uitvoeren met grotere gegevens matrices.

Voor het uitvoeren van een bel sorteren evalueren van 1 tot n-1 elementen in de matrix waarin u vergelijkt u elk element met de na (met andere woorden, element 1 vergeleken met element 2, 2-element wordt vergeleken met het element 3, enzovoort). Als een element groter is dan het element achter, worden die twee elementen uitgewisseld. Herhaal dit proces totdat er geen meer uitwisselingen van elementen. Hier volgt een voorbeeld van een bel sorteren met een Visual Basic-Variant type array.
  1. Typ of plak de volgende code in een module werk blad: 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. De macro wilt uitvoeren, klikt u op deHulp programma'shet menuMacro, en klik vervolgens opMacro's.
  3. Selecteer de macro SelectionSortMyArray en klik vervolgens opUitvoeren.
OPMERKING: Beide voorbeelden sorteren in oplopende volg orde. Voor het uitvoeren van een Selectie sorteren in aflopende volg orde wijzigen ">" aan "<" in="" the="" following="" line="" of="" the=""></">SelectionSortfunctie:
If TempArray(j) > MaxVal Then
				
Bel sorteren in aflopende volg orde uitvoeren, wijzigen ' > ' naar een "<" in="" the="" following="" line="" of="" the=""></">BubbleSortfunctie:
If TempArray(i) > TempArray(i + 1) Then
				

Eigenschappen

Artikel ID: 213818 - Laatste beoordeling: dinsdag 20 september 2011 - Wijziging: 3.0
De informatie in dit artikel is van toepassing op:
  • Microsoft Excel 2000 Standard Edition
Trefwoorden: 
kbdtacode kbhowto kbinfo kbprogramming kbmt KB213818 KbMtnl
Automatisch vertaald artikel
BELANGRIJK: Dit artikel is vertaald door de vertaalmachine software van Microsoft in plaats van door een professionele vertaler. Microsoft biedt u professioneel vertaalde artikelen en artikelen vertaald door de vertaalmachine, zodat u toegang heeft tot al onze knowledge base artikelen in uw eigen taal. Artikelen vertaald door de vertaalmachine zijn niet altijd perfect vertaald. Deze artikelen kunnen fouten bevatten in de vocabulaire, zinsopbouw en grammatica en kunnen lijken op hoe een anderstalige de taal spreekt en schrijft. Microsoft is niet verantwoordelijk voor onnauwkeurigheden, fouten en schade ontstaan door een incorrecte vertaling van de content of het gebruik ervan door onze klanten. Microsoft past continue de kwaliteit van de vertaalmachine software aan door deze te updaten.
De Engelstalige versie van dit artikel is de volgende:213818

Geef ons feedback

 

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