Sortera nummer i Excel VBA - enkla Excel -makron

Innehållsförteckning

Nedan kommer vi att titta på ett program i Excel VBA det där sorterar siffror.

Situation:

Placera en kommandoknapp på ditt kalkylblad och lägg till följande kodrader:

1. Först deklarerar vi tre variabler av typen heltal och ett intervallobjekt.

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

2. Vi initierar Range -objektet rng med siffrorna i kolumn A. Vi använder egenskapen CurrentRegion för detta. CurrentRegion är användbart när vi inte vet de exakta gränserna för ett intervall i förväg (vi vill att det här programmet ska fungera för 9 nummer men också för 90 nummer).

Ställ in rng = Range ("A1"). CurrentRegion

3. Vi startar två For Next loopar.

För i = 1 Till rng.Count
För j = i + 1 Till rng.Count

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

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

Om rng.Cells (j) <rng.Cells (i) Då
Avsluta om

Om ovanstående påstående är sant byter vi siffrorna.

Till exempel: för i = 1 och j = 2 jämförs siffrorna 2 och 10. Ovanstående påstående är inte sant. Därför behöver du inte byta siffror. Excel VBA ökar j med 1 och upprepar kodraderna för i = 1 och j = 3. Du kan enkelt se att 5 är större än 2, så du behöver fortfarande inte byta siffror. Vi får samma resultat för j = 4, j = 5 och j = 6. När vi kommer fram till j = 7 är ovanstående påstående sant eftersom 1 är mindre än 2.

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

'byt nummer
temp = rng.Cells (i)
rng.Cells (i) = rng.Cells (j)
rng.Celler (j) = temp

6. Vi stänger den andra For Next loop (Outside the If statement).

Nästa j

För i = 1 och j = 7 bytte Excel VBA numren. Det betyder att vi får 1 vid den första positionen och 2 på position 7. Nu när vi har 1 på den 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 finns ingen anledning att byta siffror (1 är det minsta antalet). På så sätt får Excel VBA (för i = 1) det minsta antalet vid den första positionen. För att få det näst minsta talet på den andra positionen upprepar Excel VBA exakt samma steg för i = 2. För att få det tredje minsta talet på den tredje positionen upprepar Excel VBA exakt samma steg för i = 3, etc.

7. Stäng den första For Next -slingan (utanför If -satsen).

Nästa i

8. Testa ditt program.

Resultat:

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

wave wave wave wave wave