Sorter numre i Excel VBA - nemme Excel -makroer

Indholdsfortegnelse

Nedenfor ser vi på et program i Excel VBA at sorterer tal.

Situation:

Placer en kommandoknap på dit regneark, og tilføj følgende kodelinjer:

1. For det første erklærer vi tre variabler af typen Integer og et Range -objekt.

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

2. Vi initialiserer Range -objektet rng med tallene i kolonne A. Vi bruger egenskaben CurrentRegion til dette. CurrentRegion er nyttig, når vi ikke kender de nøjagtige grænser for et område på forhånd (vi vil have, at dette program fungerer for 9 tal, men også for 90 tal).

Indstil rng = Range ("A1"). CurrentRegion

3. Vi starter to For Next loops.

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

Forklaring: rng.Count er lig med 9, så de to første kodelinjer reduceres til For i = 1 til 9 og For j = i + 1 til 9. For i = 1, j = 2, 3,…, 8 og 9 markeres .

4. For at sortere tallene korrekt sammenligner vi det første tal med det næste tal. Hvis det næste tal er mindre, bytter vi tallene. Tilføj følgende If Then -erklæring.

Hvis rng.Celler (j) <rng.Cells (i) Så
Afslut Hvis

Hvis ovenstående udsagn er sand, bytter vi tallene.

For eksempel: for i = 1 og j = 2 sammenlignes tallene 2 og 10. Ovenstående udsagn er ikke sandt. Det er derfor ikke nødvendigt at skifte numre. Excel VBA øger j med 1 og gentager kodelinjerne for i = 1 og j = 3. Du kan let se, at 5 er større end 2, så det er stadig ikke nødvendigt at skifte numre. Vi får det samme resultat for j = 4, j = 5 og j = 6. Når vi ankommer til j = 7, er ovenstående sætning sand, da 1 er mindre end 2.

5. Vi bytter numre. Vi gemmer midlertidigt et nummer til midlertidig, så Excel VBA kan skifte numrene korrekt. Tilføj følgende kodelinjer i If -sætningen.

'bytte numre
temp = rng.Celler (i)
rng.Celler (i) = rng.Celler (j)
rng.Celler (j) = temp

6. Vi lukker den anden For Næste loop (uden for If -sætningen).

Næste j

For i = 1 og j = 7 byttede Excel VBA tallene. Det betyder, at vi får 1 ved den første position og 2 på position 7. Nu hvor vi har 1 på den første position, vil vi sammenligne denne værdi med 5 (for j = 8) og 4 (for j = 9). Det er ikke nødvendigt at skifte numre (1 er det mindste tal). På denne måde får Excel VBA (for i = 1) det mindste tal ved den første position. For at få det næstmindste tal på den anden position gentager Excel VBA de nøjagtig samme trin for i = 2. For at få det tredje mindste tal på den tredje position gentager Excel VBA de nøjagtig samme trin for i = 3 osv.

7. Luk den første For Next loop (uden for If -sætningen).

Næste i

8. Test dit program.

Resultat:

Du vil bidrage til udviklingen af ​​hjemmesiden, at dele siden med dine venner

wave wave wave wave wave