VBA sortimismassiiv

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.

Te aitate arengu ala, jagades leht oma sõpradega

wave wave wave wave wave