U nastavku ćemo pogledati program u Excel VBA da nasumično sortira podatke (u ovom primjeru nasumično sortira imena).
Situacija:
1. Prvo, deklariramo četiri varijable. Jednu varijablu tipa String nazivamo TempString, jednu varijablu tipa Integer nazivamo TempInteger, jednu varijablu tipa Integer nazivamo i, a jednu varijablu tipa Integer nazivamo j.
Dim tempString As String, tempInteger kao cijeli broj, i kao cijeli broj, j kao cijeli broj
2. U stupac B upisujemo 5 slučajnih brojeva (po jedan za svako ime). Za to koristimo funkciju radnog lista RandBetween.
Za i = 1 do 5
Ćelije (i, 2) .Vrijednost = Funkcija radnog lista.RandBetween (0, 1000)
Sljedeći i
Dosadašnji rezultat:
Za sortiranje imena koristit ćemo brojeve pored svakog imena. Ime s najnižim brojem prvo, ime s drugim najnižim brojem, drugo itd.
3. Pokrećemo Double Loop.
Za i = 1 do 5
Za j = i + 1 do 5
4. Dodajte sljedeći kodni redak:
Ako su ćelije (j, 2) .Vrijednost <ćelije (i, 2) .Vrijednost Zatim
Primjer: za i = 1 i j = 2 uspoređuju se Wendy i Richard. Budući da Richard ima manji broj, zamijenili smo Wendy i Richarda. Richard je sada na prvom mjestu. Za i = 1 i j = 3 uspoređuju se Richard i Joost. Joost ima veći broj pa se ništa ne događa. Na taj način Excel VBA dobiva ime s najmanjim brojem na prvom mjestu. Za i = 2, Excel VBA dobiva naziv s drugim najnižim brojem na drugoj poziciji itd.
5. Ako je točno, mijenjamo imena.
tempString = Ćelije (i, 1) .Vrijednost
Stanice (i, 1) .Vrijednost = Ćelije (j, 1) .Vrijednost
Ćelije (j, 1) .Vrijednost = tempString
6. I mijenjamo brojeve.
tempInteger = Ćelije (i, 2) .Vrijednost
Stanice (i, 2) .Vrijednost = Ćelije (j, 2) .Vrijednost
Stanice (j, 2) .Vrijednost = tempInteger
7. Ne zaboravite zatvoriti naredbu If.
Završi ako
8. Ne zaboravite zatvoriti dvije petlje.
Sljedeće j
Sljedeći i
9. Testirajte program.
Proizlaziti:
Napomena: možete dodati redak koji briše brojeve u stupcu B. Još je ljepše postaviti brojeve svakog imena u niz, tako da se brojevi ne stavljaju na vaš radni list. Međutim, radi ilustracije, odabrali smo postavljanje vrijednosti na list.