Supprimer les doublons dans Excel VBA
Ci-dessous, nous examinerons un programme dans Excel VBA qui supprime les doublons.
Situation:
Dans la colonne A, nous avons 10 numéros. Nous voulons supprimer les doublons de ces numéros et placez-les numéros uniques dans la colonne B.
-
Tout d’abord, nous déclarons quatre variables. toAdd de type booléen, uniqueNumbers de type entier, i de type Integer et j de type entier.
Dim toAdd As Boolean, uniqueNumbers As Integer, i As Integer, j As Integer
-
Ensuite, nous écrivons le premier numéro de la colonne A à la colonne B depuis le premier numéro est toujours « unique ».
Cells(1, 2).Value = Cells(1, 1).Value
-
Nous initialisons deux variables. Nous avons ajouté un numéro à la colonne B, donc nous initialisons uniqueNumbers avec la valeur 1. Nous avons mis toAdd True en supposant que les prochains besoins de nombre à ajouter ainsi (ce n’est pas nécessairement vrai, bien sûr).
uniqueNumbers = 1 toAdd = True
Nous devons déterminer si le second numéro est « unique » ou non. Cela peut se faire de manière très facile. Seulement si le nombre est pas déjà dans la colonne B, le deuxième nombre doit être ajouté à la colonne B.
-
Nous devons également vérifier pour le troisième numéro, le quatrième numéro, et ainsi de suite. Nous commençons une boucle For Next pour cela.
For i = 2 To 10
-
Maintenant vient la partie la plus importante du programme. Si le second nombre est égal à l’un des numéros dans la colonne B (jusqu’à présent, nous avons un seul numéro unique), nous avons mis toAdd False parce que dans ce cas, nous ne voulons pas ajouter ce numéro! (Il est ‘unique’). Aux uniqueNumbers de moment est toujours égal à 1, mais uniqueNumbers peut être une liste complète. Pour vérifier toute cette liste, nous avons besoin d’une autre boucle For Next. Encore une fois: si le nombre que nous voulons ajouter est égal à l’un des numéros dans cette liste, toAdd sera définie sur False et le nombre ne sera pas ajouté. Ajoutez les lignes de code suivantes:
For j = 1 To uniqueNumbers If Cells(i, 1).Value = Cells(j, 2).Value Then toAdd = False End If Next j
-
Seulement si toAdd est toujours vrai et non définie sur False, Excel VBA doit ajouter le numéro à la colonne B. En même temps, on incrémente uniqueNumbers par 1 parce que nous avons un numéro unique plus maintenant. Les lignes de code suivantes faire le travail:
If toAdd = True Then Cells(uniqueNumbers + 1, 2).Value = Cells(i, 1).Value uniqueNumbers = uniqueNumbers + 1 End If
-
Enfin, nous avons mis toAdd True en supposant que le prochain numéro (troisième numéro) doit être ajouté. Encore une fois ce n’est pas nécessairement vrai.
toAdd = True
-
Ne pas oublier de fermer la boucle.
Next i
-
Placez votre macro dans un bouton de commande et de le tester.
Résultat: