Je bent nu offline; er wordt gewacht tot er weer een internetverbinding is

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

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
Dit artikel is gearchiveerd. Het wordt aangeboden in de huidige vorm en wordt niet meer bijgewerkt.
Samenvatting
In Microsoft Excel 2000 is er geen directe methode voor het sorteren van een array vanwaarden met een Microsoft Visual Basic for Applications-macro of procedure.In dit artikel worden twee verschillende algoritmen die u gebruiken kunt om te sorterenarrays: 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 iEnd FunctionSub 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 iEnd 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 uvergelijkt 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 FunctionSub 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 iEnd 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 eenSelectie 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				
EXCEL 2000

Waarschuwing: dit artikel is automatisch vertaald

Eigenschappen

Artikel-id: 213818 - Laatst bijgewerkt: 12/05/2015 12:20:30 - Revisie: 3.0

Microsoft Excel 2000 Standard Edition

  • kbnosurvey kbarchive kbdtacode kbhowto kbinfo kbprogramming kbmt KB213818 KbMtnl
Feedback