Getallen sorteren in Excel VBA - Eenvoudige Excel-macro's

Inhoudsopgave

Hieronder zullen we kijken naar een programma in Excel VBA Dat sorteert nummers.

Situatie:

Plaats een opdrachtknop op uw werkblad en voeg de volgende coderegels toe:

1. Eerst declareren we drie variabelen van het type Integer en één Range-object.

Dim i als geheel getal, j als geheel getal, temp als geheel getal, rng als bereik

2. We initialiseren het Range-object rng met de getallen in kolom A. Hiervoor gebruiken we de eigenschap CurrentRegion. CurrentRegion is handig als we niet van tevoren de exacte grenzen van een bereik weten (we willen dat dit programma werkt voor 9 nummers maar ook voor 90 nummers).

Stel rng = Bereik ("A1") in. Huidige regio

3. We starten twee For Next-lussen.

Voor i = 1 Naar rng.Count
Voor j = i + 1 Naar rng.Count

Uitleg: rng.Count is gelijk aan 9, dus de eerste twee coderegels reduceren tot For i = 1 tot 9 en For j = i + 1 tot 9. For i = 1, j = 2, 3,… , 8 en 9 worden gecontroleerd .

4. Om de getallen goed te sorteren, vergelijken we het eerste getal met het volgende getal. Als het volgende getal kleiner is, wisselen we de getallen om. Voeg de volgende If Then-instructie toe.

Als rng.Cellen(j) < rng.Cellen(i) Dan
Stop als

Als bovenstaande bewering waar is, wisselen we de getallen om.

Bijvoorbeeld: voor i = 1 en j = 2 worden de getallen 2 en 10 vergeleken. Bovenstaande stelling is niet waar. Het is dus niet nodig om de nummers om te wisselen. Excel VBA verhoogt j met 1 en herhaalt de coderegels voor i = 1 en j = 3. Je kunt gemakkelijk zien dat 5 groter is dan 2, dus het is nog steeds niet nodig om de cijfers om te wisselen. We krijgen hetzelfde resultaat voor j = 4, j = 5 en j = 6. Wanneer we bij j = 7 komen, is de bovenstaande bewering waar omdat 1 kleiner is dan 2.

5. We wisselen de nummers om. We slaan tijdelijk één nummer op voor temp, zodat Excel VBA de nummers goed kan verwisselen. Voeg de volgende coderegels toe aan de If-instructie.

'nummers verwisselen'
temp = rng.Cellen(i)
rng.Cellen(i) = rng.Cellen(j)
rng.Cellen(j) = temp

6. We sluiten de tweede For Next-lus (buiten het If-statement).

volgende j

Voor i = 1 en j = 7 heeft Excel VBA de getallen verwisseld. Dat betekent dat we 1 krijgen op de eerste positie en 2 op positie 7. Nu we 1 hebben op de eerste positie, gaan we deze waarde vergelijken met 5 (voor j = 8) en 4 (voor j = 9). Het is niet nodig om de getallen om te wisselen (1 is het kleinste getal). Op deze manier krijgt Excel VBA (voor i = 1) het kleinste getal op de eerste positie. Om het op een na kleinste getal op de tweede positie te krijgen, herhaalt Excel VBA exact dezelfde stappen voor i = 2. Om het op twee na kleinste getal op de derde positie te krijgen, herhaalt Excel VBA exact dezelfde stappen voor i = 3, enz.

7. Sluit de eerste For Next-lus (buiten de If-instructie).

volgende i

8. Test je programma.

Resultaat:

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave