/ / Slumpmässigt sortera data i Excel VBA

Slumpmässigt sortera data i Excel VBA

Nedan ser vi på ett program i Excel VBA den där slumpmässigt sorterar data (i det här exemplet sorteras slumpmässigt namn).

Situation:

Slumpmässigt sortera data i Excel VBA

1. Först deklarerar vi fyra variabler. En variabel av typen String vi kallar TempString, en variabel av typen Integer vi kallar TempInteger, en variabel av typen Integer vi kallar i, och en variabel av typen Integer 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.

For i = 1 To 5
    Cells(i, 2).Value = WorksheetFunction.RandBetween(0, 1000)
Next i

Resultat hittills:

Resultat hittills

Vi använder siffrorna bredvid varje namn för att sortera namnen. Namnet med det lägsta numret först, namnet med det näst lägsta numret, andra etc.

3. Vi startar en Double Loop.

For i = 1 To 5
    For j = i + 1 To 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å första plats nu. För i = 1 och j = 3 jämförs Richard och Joost. Joost har ett högre antal så ingenting händer. På så sätt får Excel VBA namnet med det lägsta numret vid första positionen. För i = 2, får Excel VBA namnet med det näst lägsta numret vid den andra positionen etc.

5. Om det är sant byter vi namnen.

tempString = Cells(i, 1).Value
Cells(i, 1).Value = Cells(j, 1).Value
Cells(j, 1).Value = tempString

6. Och vi byter numren.

tempInteger = Cells(i, 2).Value
Cells(i, 2).Value = Cells(j, 2).Value
Cells(j, 2).Value = tempInteger

7. Glöm inte att stänga If-förklaringen.

End If

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

    Next j
Next i

9. Testa programmet.

Resultat:

Slumpmässigt Sortera Data Resultat

Notera: Du kan lägga till en rad som raderar siffrorna i kolumn B. Det är ännu trevligare att placera numren på varje namn i en matris så att inga nummer läggs på ditt arbetsblad. För illustrativt ändamål har vi valt att placera värden på arket.

Läs också: