VBA-sorteermatrix

Deze zelfstudie laat zien hoe u waarden in een array in VBA kunt sorteren

Een eendimensionale array sorteren met een lus

Het sorteren van een array vereist een beetje gegevensmanipulatie met behulp van lussen, variabelen en tijdelijke arrays.

  • U moet eerst de array vullen met uw waarden
  • Je moet dan twee keer door de array lopen! Eén keer om een ​​waarde te krijgen van de huidige elementarray, en terwijl u nog steeds in die lus zit, om de waarde van het volgende element in de array te krijgen.
  • Je moet dan de elementen vergelijken - en de 2e naar de positie van de eerste verplaatsen als de 2e alfabetisch VOOR de 1e staat.

Het onderstaande voorbeeld demonstreert deze procedure.

1234567891011121314151617181920212223 Sub SortAnArray()Dim ik zo lang'Stel de array in'Dim strName() als variantGedimde temperatuur als variant'vul de array'strName() = Array ("Bob Smith", "John Davies", "Fred Jones", "Steve Jenkins", "Bob Williams")'loop door de grens van de arry en krijg de voornaam'Voor i = LBound(strName) Naar UBound(strName) - 1'loop opnieuw door en controleer of de volgende naam alfabetisch voor of na het origineel staat'Voor j = i + 1 Naar UBound(strName)Als UCase(strName(i)) > UCase(strName(j)) Dan'als de naam vóór de vorige naam moet worden verplaatst, voeg dan toe aan een tijdelijke arrayTemp = strNaam(j)'verwissel de namen'strNaam(j) = strNaam(i)strNaam(i) = TempStop alsvolgende jvolgende i'Voer de array uit via een berichtvenster'MsgBox Join(strName(), vbCrLf)Einde sub

Als u deze procedure uitvoert, krijgt u het volgende berichtvenster.

U kunt de array ook in de andere richting sorteren - bijvoorbeeld: Z naar A door deze regel code te wijzigen

1 Als UCase(strName(i)) > UCase(strName(j)) Dan

naar deze regel code

1 Als UCase(strName(i)) < UCase(strName(j)) Dan

U krijgt dan het volgende berichtvenster.

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave