Numéros de VBA dans Excel Trier
Ci-dessous, nous examinerons un programme dans Excel VBA qui trie des nombres.
Situation:
Placez un bouton de commande sur votre feuille de calcul et ajoutez les lignes de code suivant:
-
Tout d’abord, nous déclarons trois variables de type entier et un objet Range.
Dim i As Integer, j As Integer, temp As Integer, rng As Range
-
Nous initialisons l’objet Range RNG avec les chiffres dans la colonne A. Nous utilisons le
lien: / ABV-exemples CurrentRegion [CurrentRegion]
bien pour cela.
CurrentRegion est utile quand on ne connaît pas les limites exactes d’une plage à l’avance (nous voulons que ce programme de travail pour 9 numéros, mais aussi pour 90 numéros).
Set rng = Range("A1").CurrentRegion
-
Nous commençons deux boucles Pour suivantes.
For i = 1 To rng.Count For j = i + 1 To rng.Count
Explication: rng.Count est égal à 9, de sorte que les deux premières lignes de code à réduire pour i = 1 à 9 et pour j = i + 1 à 9. Pour i = 1, j = 2, 3, …, 8 et 9 sont vérifiés.
-
Pour trier les chiffres correctement, on compare le premier numéro avec le numéro suivant. Si le numéro suivant est plus petit, nous échangeons les chiffres. Ajouter ce qui suit Si THEN.
If rng.Cells(j) < rng.Cells(i) Then End If
Si l’énoncé ci-dessus est vrai, nous échangeons les chiffres.
Par exemple: pour i = 1 et j = 2, on compare les nombres 2 et 10. La déclaration ci-dessus n’est pas vrai. Ainsi, pas besoin de changer les chiffres. Excel VBA j par 1 et répète les lignes de code pour i = 1 et j = 3. Vous pouvez facilement voir que 5 est plus grand que 2, donc toujours pas besoin de changer les chiffres. Nous obtenons le même résultat pour j = 4, j = 5 et j = 6. Quand nous arrivons à j = 7, la déclaration ci-dessus est vrai depuis 1 est inférieur à 2.
-
Nous
lien: / vba-exemples-échange des valeurs [swaps]
les numéros. Nous enregistrons temporairement un numéro à température, de sorte que Excel VBA peut échanger les numéros correctement. Ajoutez les lignes de code suivant dans l’instruction If.
'swap numbers temp = rng.Cells(i) rng.Cells(i) = rng.Cells(j) rng.Cells(j) = temp
-
Nous terminons la deuxième boucle For Next (En dehors de l’instruction if).
Next j
Pour i = 1 et j = 7, Excel VBA a troqué les chiffres. Cela signifie que nous obtenons 1 à la première position et 2 à la position 7. Maintenant que nous avons 1 à la première position, nous comparerons cette valeur avec 5 (pour j = 8) et 4 (pour j = 9). Il n’y a pas besoin de changer les chiffres (1 est le plus petit nombre).
De cette façon, Excel VBA obtient (pour i = 1) le plus petit nombre à la première position. Pour obtenir le deuxième plus petit nombre à la deuxième position, Excel VBA répète exactement les mêmes étapes pour i = 2. Pour obtenir le troisième plus petit nombre à la troisième position, Excel VBA répète exactement les mêmes étapes pour i = 3, etc.
-
Fermer la première boucle For Next (En dehors de l’instruction if).
Next i
-
Testez votre programme.
Résultat: