Supprimer des Lignes Avec des Doublons de Données VBA
Je suis aux prises avec quelque chose qui devrait être assez simple, cependant, j'ai lu au moins 15 méthodes de le faire et n'arrive pas à le faire fonctionner.
Voici un échantillon de données:
9:30:01 584.7
9:30:01 590
9:30:01 595
9:30:02 584.51
9:30:03 584.62
9:30:04 584.44
9:30:05 584.05
Je veux seulement une ligne par seconde, de sorte que les 3 premières lignes, un seul doit rester. Je ne m'inquiète pas si c'est le premier ou le dernier, mais le code que j'ai été en utilisant conserve le dernier, 595 dans ce cas.
La façon dont je le fais c'est avec une boucle for qui efface le contenu de la ligne qui a le même temps que la ligne en dessous. J'ai ensuite trier l'ensemble de la gamme.
J'imagine que c'est un moyen plus simple de tout simplement supprimer la ligne supplémentaire de l'aller. Cependant, lorsque j'utilise supprimer sur la plage, au lieu de clair, il ne supprimera pas toutes les lignes en double.
Voici ce que je veux que les données à ressembler à:
9:30:01 595
9:30:02 584.51
9:30:03 584.62
9:30:04 584.44
9:30:05 584.05
J'ai besoin que cela se produise pour l'ensemble de la feuille. Le temps est la Colonne B et les valeurs de la colonne C.
Ici c'est le code que j'utilise,
LastRow = ActiveSheet.UsedRange.row - 1 + _
ActiveSheet.UsedRange.Rows.Count
For RowNum = 2 To LastRow
If (Range("B" & RowNum) = Range("B" & RowNum + 1)) Then
Range("B" & RowNum).EntireRow.Clear
End If
Next RowNum
Range("A2:C" & LastRow).Sort key1:=Range("B2:B" & LastRow), _
order1:=xlAscending, Header:=xlNo
- Si vous boucle de bas en haut, alors vous pouvez supprimer la ligne instantanément. Partagez votre code et je vais vous aider avec ça.
- présente une excellente solution -- vous pourrait également utiliser la Plage.RemoveDuplicates méthode pour cela (surtout depuis que votre structure de colonne est donc bien définie)... Voici une référence MSDN: msdn.microsoft.com/en-us/library/office/...
- Coureur que j'ai ajouté le code. Votre idée semble très intelligent.
Vous devez vous connecter pour publier un commentaire.
Ne tourne pas en boucle. Utilisation RemoveDuplicates. De manière plus rapide que toute la boucle. Une seule ligne de code.
Edit: captures d'écran
AVANT
APRÈS
Edit: Ne fonctionne pas dans Excel 2011 pour Mac (allez comprendre).
Cela devrait faire l'affaire:
Une autre option est d'aller de bas en haut, comme ceci:
ce que vous préférez utiliser si personnelle. Veuillez considérer la réponse de teylyn ainsi, dans cette situation, il est très utilisable.
For i = Cells.SpecialCells(xlLastCell).Row to 1 Step -1
mais alors vous devez changer un peu d'autres choses.