/ / Tilfeldig sortering av data i Excel VBA

Tilfeldig sortering av data i Excel VBA

Nedenfor ser vi på et program i Excel VBA at tilfeldig sorterer data (i dette eksemplet tilfeldigvis sorterer navn).

Situasjon:

Tilfeldig sortering av data i Excel VBA

1. Først erklærer vi fire variabler. En variabel av typen String vi kalder TempString, en variabel av typen Integer vi kaller TempInteger, en variabel av typen Integer vi ringer i, og en variabel av typen Integer vi ringer j.

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

2. Vi skriver 5 tilfeldige tall til kolonne B (ett for hvert navn). Vi bruker regnearkfunksjonen RandBetween for dette.

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

Resultat hittil:

Resultat hittil

Vi vil bruke tallene ved siden av hvert navn for å sortere navnene. Navnet med det laveste nummeret først, navnet med det nest laveste nummeret, andre osv.

3. Vi starter en Double Loop.

For i = 1 To 5
    For j = i + 1 To 5

4. Legg til følgende kodelinje:

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

Eksempel: for i = 1 og j = 2, sammenlignes Wendy og Richard. Fordi Richard har et lavere nummer, bytter vi Wendy og Richard. Richard er i første posisjon nå. For i = 1 og j = 3, sammenlignes Richard og Joost. Joost har et høyere nummer, slik at ingenting skjer. På denne måten får Excel VBA navnet med det laveste nummeret i første posisjon. For i = 2, får Excel VBA navnet med det nest laveste nummeret i den andre posisjonen etc.

5. Hvis sant, bytter vi navnene.

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

6. Og vi bytter tallene.

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

7. Ikke glem å lukke If-setningen.

End If

8. Ikke glem å lukke de to løkkene.

    Next j
Next i

9. Test programmet.

Resultat:

Tilfeldig sorteringsresultat

Merk: Du kan legge til en linje som sletter tallene i kolonne B. Det er enda bedre å plassere tallene til hvert navn i en matrise, så ingen tall er plassert på regnearket. Men for illustrative formål har vi valgt å plassere verdier på arket.

Les også: