Sisällysluettelo
Tämä opetusohjelma osoittaa, miten arvot lajitellaan taulukossa VBA: ssa
Yksiulotteisen taulukon lajittelu silmukan avulla
Taulukon lajittelu vaatii hieman tietojen käsittelyä silmukoiden, muuttujien ja väliaikaisten matriisien avulla.
- Sinun on ensin täytettävä taulukko arvoillasi
- Sitten sinun on kierrettävä taulukko kahdesti! Kerran, kun haluat saada arvon nykyiseltä elementtijoukolta, ja kun olet vielä kyseisessä silmukassa, saadaksesi taulukon seuraavan elementin arvon.
- Sitten sinun on vertailtava elementtejä - ja siirrettävä toinen ensimmäiseen kohtaan, jos toinen on aakkosjärjestyksessä ENNEN ensimmäistä.
Alla oleva esimerkki osoittaa tämän menettelyn.
1234567891011121314151617181920212223 | AlalajitteluAnArray ()Dim niin kauan'Aseta taulukkoDim strName () VarianttinaDim Temp Varianttina'täytä taulukkostrName () = Array ("Bob Smith", "John Davies", "Fred Jones", "Steve Jenkins", "Bob Williams")'silmukan läpi arry sidottu ja saada etunimiSillä i = LBound (strName) - UBound (strName) - 1'silmukka uudelleen ja tarkista, onko seuraava nimi aakkosjärjestyksessä ennen alkuperäistä vai sen jälkeenJos j = i + 1 UBoundiin (strName)Jos UCase (strName (i))> UCase (strName (j)) Sitten'Jos nimi on siirrettävä edellisen nimen eteen, lisää se väliaikaiseen taulukkoonLämpötila = strName (j)'vaihda nimetstrName (j) = strName (i)strName (i) = LämpötilaLoppu JosSeuraava jSeuraavaksi minä'Tulosta Array viestiruudun kauttaMsgBox Join (strName (), vbCrLf)End Sub |
Jos suoritat tämän menettelyn, saat seuraavan viestiruudun.
Voit myös lajitella taulukon toiseen suuntaan - esim. Z - A muuttamalla tätä koodiriviä
1 | Jos UCase (strName (i))> UCase (strName (j)) Sitten |
tähän koodiriviin
1 | Jos UCase (strName (i)) <UCase (strName (j)) Sitten |
Saat sitten seuraavan viestiruudun.