Sorter tall i Excel VBA - Enkle Excel -makroer

Innholdsfortegnelse

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

Situasjon:

Plasser en kommandoknapp på regnearket og legg til følgende kodelinjer:

1. Først deklarerer vi tre variabler av typen Heltall og ett områdeobjekt.

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 bruker egenskapen CurrentRegion til dette. CurrentRegion er nyttig når vi ikke vet de eksakte grensene for et område på forhånd (vi vil at dette programmet skal fungere for 9 tall, men også for 90 tall).

Sett 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.Tall er lik 9, så de to første kodelinjene reduseres til For i = 1 til 9 og For j = i + 1 til 9. For i = 1, j = 2, 3,…, 8 og 9 er merket .

4. For å sortere tallene riktig, sammenligner vi det første tallet med det neste tallet. Hvis det neste tallet er mindre, bytter vi tallene. Legg til følgende If Then -setning.

Hvis rng.Cells (j) <rng.Cells (i) Da
Slutt om

Hvis utsagnet ovenfor er sant, bytter vi tallene.

For eksempel: for i = 1 og j = 2 blir tallene 2 og 10 sammenlignet. Utsagnet ovenfor er ikke sant. Derfor er det ikke nødvendig å bytte tall. Excel VBA øker j med 1 og gjentar kodelinjene for i = 1 og j = 3. Du kan enkelt se at 5 er større enn 2, så det er fortsatt ikke nødvendig å bytte tall. Vi får det samme resultatet for j = 4, j = 5 og j = 6. Når vi kommer til j = 7, er utsagnet ovenfor sant siden 1 er mindre enn 2.

5. Vi bytter tall. Vi lagrer midlertidig ett nummer til midlertidig, slik at Excel VBA kan bytte tallene riktig. Legg til følgende kodelinjer i If -setningen.

'bytt tall
temp = rng.Celler (i)
rng.Cells (i) = rng.Cells (j)
rng.Celler (j) = temp

6. Vi lukker den andre For Next -løkken (utenfor If -setningen).

Neste j

For i = 1 og j = 7 byttet Excel VBA tallene. Det betyr at vi får 1 ved første posisjon og 2 på posisjon 7. Nå som vi har 1 på første posisjon, vil vi sammenligne denne verdien med 5 (for j = 8) og 4 (for j = 9). Det er ikke nødvendig å bytte tall (1 er det minste tallet). På denne måten får Excel VBA (for i = 1) det minste tallet i første posisjon. For å få det nest minste tallet på den andre posisjonen, gjentar Excel VBA nøyaktig de samme trinnene for i = 2. For å få det tredje minste tallet på den tredje posisjonen, gjentar Excel VBA nøyaktig de samme trinnene for i = 3, etc.

7. Lukk den første For Next -løkken (utenfor If -setningen).

Neste jeg

8. Test programmet ditt.

Resultat:

Du vil bidra til utvikling av området, dele siden med vennene dine

wave wave wave wave wave