Slumpmässigt sortera data i Excel VBA - enkla Excel -makron

Innehållsförteckning

Nedan kommer vi att titta på ett program i Excel VBA det där sorterar slumpmässigt data (i det här exemplet sorterar slumpmässigt namn).

Situation:

1. Först deklarerar vi fyra variabler. En variabel av typen String kallar vi TempString, en variabel av typen Integer kallar vi TempInteger, en variabel av typen Integer som vi kallar i och en variabel av typen Integer som vi kallar j.

Dim tempString As String, tempInteger As Integer, i As Integer, j As Integer

2. Vi skriver 5 slumptal till kolumn B (ett för varje namn). Vi använder kalkylbladsfunktionen RandBetween för detta.

För i = 1 till 5
Celler (i, 2) .Value = WorksheetFunction.RandBetween (0, 1000)
Nästa i

Resultat hittills:

Vi kommer att använda siffrorna bredvid varje namn för att sortera namnen. Namnet med det lägsta talet först, namnet med det näst lägsta talet, andra osv.

3. Vi startar en Double Loop.

För i = 1 till 5
För j = i + 1 till 5

4. Lägg till följande kodrad:

If Cells (j, 2) .Value <Cells (i, 2) .Value Then

Exempel: för i = 1 och j = 2 jämförs Wendy och Richard. Eftersom Richard har ett lägre antal byter vi Wendy och Richard. Richard är på den första positionen nu. För i = 1 och j = 3 jämförs Richard och Joost. Joost har ett högre tal så ingenting händer. På så sätt får Excel VBA namnet med det lägsta talet vid den första positionen. För i = 2 får Excel VBA namnet med det näst lägsta talet vid den andra positionen, etc.

5. Om det är sant byter vi namn.

tempString = Celler (i, 1) .Värde
Celler (i, 1) .Värde = Celler (j, 1) .Värde
Celler (j, 1) .Value = tempString

6. Och vi byter siffror.

tempInteger = Celler (i, 2) .Värde
Celler (i, 2) .Värde = Celler (j, 2) .Värde
Celler (j, 2) .Värde = tempInteger

7. Glöm inte att stänga if -uttalandet.

Avsluta om

8. Glöm inte att stänga de två öglorna.

 Nästa j
Nästa i

9. Testa programmet.

Resultat:

Obs: du kan lägga till en rad som raderar siffrorna i kolumn B. Det är ännu trevligare att placera siffrorna för varje namn i en matris, så inga nummer placeras i ditt kalkylblad. För illustrativa ändamål har vi dock valt att placera värdena på arket.

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave