/ / Sortera nummer i Excel VBA

Sortera nummer i Excel VBA

Nedan ser vi på ett program i Excel VBA den där sorterar siffror.

Situation:

Sortera antal exempel

Placera en kommandoknapp på ditt arbetsblad och lägg till följande kodlinjer:

1. Först deklarerar vi tre variabler av typen Integer och ett Range-objekt.

Dim i As Integer, j As Integer, temp As Integer, rng As Range

2. Vi initierar Range object rng med siffrorna i kolumn A. Vi använder egenskapen CurrentRegion för detta. CurrentRegion är användbar när vi inte vet exakta gränser för en rad i förväg (vi vill att detta program ska fungera för 9 nummer men också för 90 nummer).

Set rng = Range("A1").CurrentRegion

3. Vi startar två för nästa loopar.

For i = 1 To rng.Count
    For j = i + 1 To rng.Count

Förklaring: rng.Count är 9, så de första två kodlinjerna minskar till For i = 1 till 9 och För j = i + 1 till 9. För i = 1, j = 2, 3, ..., 8 och 9 kontrolleras.

4. För att sortera siffrorna ordentligt jämför vi det första numret med nästa nummer. Om nästa nummer är mindre byter vi numren. Lägg till följande If Then statement.

If rng.Cells(j) < rng.Cells(i) Then

End If

Om ovanstående uttalande är sant, byter vi numren.

Till exempel: för i = 1 och j = 2 jämförs numren 2 och 10. Ovanstående uttalande är inte sant. Således behöver man inte byta nummer. Excel VBA ökar j med 1 och upprepar kodlinjerna för i = 1 och j = 3. Du kan enkelt se att 5 är större än 2, så behöver du inte byta nummer. Vi får samma resultat för j = 4, j = 5 och j = 6. När vi kommer till j = 7 är ovanstående sanning sann eftersom 1 är mindre än 2.

5. Vi byter siffrorna. Vi lagrar tillfälligt ett nummer till temp, så att Excel VBA kan byta siffror ordentligt. Lägg till följande kodrader i If-förklaringen.

"swap numbers
temp = rng.Cells(i)
rng.Cells(i) = rng.Cells(j)
rng.Cells(j) = temp

6. Vi stänger den andra För nästa loop (Utanför If-satsen).

Next j

För i = 1 och j = 7 bytte Excel VBAtal. Det betyder att vi får 1 i första positionen och 2 i position 7. Nu när vi har 1 i första positionen kommer vi att jämföra detta värde med 5 (för j = 8) och 4 (för j = 9). Det är inte nödvändigt att byta nummer (1 är det minsta antalet). På detta sätt får Excel VBA (för i = 1) det minsta numret vid första positionen. För att få det näst minsta numret vid den andra positionen, upprepar Excel VBA exakt samma steg för i = 2. För att få det tredje minsta numret vid den tredje positionen, upprepar Excel VBA exakt samma steg för i = 3 etc.

7. Stäng den första För nästa slingan (Utanför If-satsen).

Next i

8. Testa ditt program.

Resultat:

Sortera nummer i Excel VBA

Läs också: