Lang L: none (table-of-contents)
See õpetus näitab, kuidas VBA -s massiivi väärtusi sortida
Ühemõõtmelise massiivi sortimine silmuse abil
Massiivi sorteerimine nõuab natuke andmetega manipuleerimist, kasutades silmuseid, muutujaid ja ajutisi massiive.
- Kõigepealt peate massiivi oma väärtustega täitma
- Seejärel peate massiivi kaks korda läbi loopima! Üks kord, et saada väärtus praegusest elemendimassiivist ja kui see on veel selles silmus, saada massiivi järgmise elemendi väärtus.
- Seejärel peate elemente võrdlema - ja teisaldama teise esimese positsiooni, kui teine on tähestikulises järjekorras ENNE esimest.
Allpool toodud näide näitab seda protseduuri.
1234567891011121314151617181920212223 | Sub SortAnArray ()Dim i As Long'Määra massiivDim strName () VariandinaDim Temp Variantina'täitke massiivstrName () = massiiv ("Bob Smith", "John Davies", "Fred Jones", "Steve Jenkins", "Bob Williams")'silmust läbi arry piiri ja saada eesnimiI = LBound (strName) kuni UBound (strName) - 1'vaadake uuesti läbi ja kontrollige, kas järgmine nimi on tähestikulises järjekorras enne või pärast originaaliJ = i + 1 jaoks UBound (strName)Kui UCase (strName (i))> UCase (strName (j)) Siis'kui nimi tuleb enne eelmist nime teisaldada, lisage see temp -massiiviTemp = strName (j)'vaheta nimedstrName (j) = strName (i)strName (i) = tempLõpp KuiJärgmine jEdasi i'Väljendage massiiv sõnumikasti kauduMsgBoxi liitumine (strName (), vbCrLf)End Sub |
Kui käivitate selle protseduuri, näete järgmist sõnumikast.
Massiivi saate sortida ka teises suunas - nt: Z kuni A, muutes seda koodirida
1 | Kui UCase (strName (i))> UCase (strName (j)) Siis |
sellele koodireale
1 | Kui UCase (strName (i)) <UCase (strName (j)) Siis |
Seejärel näete järgmist sõnumikasti.