Supprimer les doublons dans une colonne dans excel 2003 vba
Bien la question est, j'ai une colonne, par exemple, la colonne Y a de nombreuses entrées, près de 40 000, et qu'Il augmente everyweek. Le truc c'est que je dois vérifier les doublons dans Y de la colonne et de supprimer la ligne entière. Ainsi, la colonne doit Y avoir seulement les entrées uniques.
Supposons que j'ai de 3000 entrées et après 1 semaine, je vais avoir environ 3 500 entrées. Maintenant, je dois vérifier ces nouvellement ajouté 500 columnn les valeurs ne sont pas les 3500 avec l'ancien + nouveau je.e de 3 500 entrées et de supprimer la copie de la ligne. Le vieux de 3 000 ne devrait pas être modifié ou supprimé. J'ai trouvé des macros, mais ils ne l'astuce pour l'ensemble de la colonne. Je voudrais filtre de la nouvelle 500 les valeurs.
Cells(2, "Q").Formula = "=COUNTIF(P$1:P1,P2)=0" 'I have used these formula
Range("Q2").Copy Destination:=Range("Q3:Q40109") 'it gives false for the duplicate values
Je sais qu'il faut utiliser countif
pour les entrées en double. Mais ce que Iam à faire est d'appliquer la formule, puis rechercher des erreurs de saisie, puis le supprimer. Je trouve que l'application de la formule et de trouver de faux, puis à la suppression de son peu de temps.
Sub DeleteDups()
Dim x As Long
Dim LastRow As Long
LastRow = Range("A65536").End(xlUp).Row
For x = LastRow To 1 Step -1
If Application.WorksheetFunction.CountIf(Range("A1:A" & x), Range("A" & x).Text) > 1 Then
Range("A" & x).EntireRow.Delete
End If
Next x
End Sub
C'est ce que j'ai trouvé sur google, mais je ne sais pas où est l'erreur. C'est la suppression de toutes les colonnes si j'ai mis
For x = LastRow To 1 Step -1
For x = LastRow to step 3000 ' It is deleting all 500 columns but if it is -1 working fine
Toutes les modifications doivent être faites pour ces fonction? ou sugest moi rien de bon de la fonction qui m'aide. Vérification de la copie des valeurs d'une colonne sélectionnée gamme de l'ensemble de la colonne. Je veux dire vérifier 500 entrées des valeurs de la colonne avec le 3500 colonne de valeurs d'entrée et de supprimer les doublons dans 500 entrées
Merci d'avance
- Vous vous demandez pourquoi tout le monde vous donne pertinence des réponses? Est-il possible qu'ils sont induits en erreur par votre question parce qu'il est obscur et déroutant? Au lieu de menacer tout le monde avec "-1", pourquoi ne pas vous rendre à votre question plus claire et plus concise, et ainsi aider ceux qui essaient de vous aider.
Vous devez vous connecter pour publier un commentaire.
Cela devrait être assez simple. Vous devez créer 1 cellule quelque part dans votre fichier que vous allez écrire le nombre de cellules de la colonne Y, chaque semaine, après la suppression de tous les dupes.
Par exemple, dire week1 vous supprimer les doublons et vous êtes de gauche avec une gamme de Y1:Y100. Votre fonction sera de mettre "100" quelque part dans votre fichier de référence.
La semaine prochaine, votre fonction sera de commencer à chercher à partir de dupes de (cellule avec numéro de ref) + 1, donc Y:101 à la fin de la colonne. Après la suppression de dupes, les changements de la fonction de la ref de la cellule vers le nouveau comte.
Voici le code:
*désolé aucune idée de pourquoi l'auto-syntaxique rend cela difficile à lire
Mise à jour:
Ici est une façon de le faire dans Excel 2003. Le truc, c'est de la boucle vers l'arrière à travers la colonne, de sorte que la boucle n'est pas détruite lors de la suppression d'une ligne. Je utiliser un dictionnaire (dont je suis célèbre pour l'aide) car il vous permet de vérifier facilement pour des dupes.
Comment Excel sais que les inscriptions sont "nouveaux"? (par exemple, comment savons-nous que nous n'avons qu'à considérer les 500 dernières lignes)
En fait, si vous avez déjà exécuté la macro de la semaine dernière, les 3 000 premières lignes n'aurez pas de doublons, donc l'exécution actuelle ne changera pas ces lignes.
Le code de votre décrits près du travail. Si nous le garder et de le modifier très légèrement:
[MODIFIER] l'Autre (probablement plus) solution: filtre tout d'abord les valeurs et supprimez les lignes visibles:
Ne pouvait pas tester cette dernière solution ici, désolé.
Voici une idée:
Il vérifie l'ensemble de la gamme au-dessus de la cellule active pour un seul double. Si elle est trouvée, il la ligne en cours est supprimé.
MODIFIER je viens de réaliser que dans votre exemple, vous avez dit que la colonne Y, mais dans votre code de vérification A. ne sais Pas si l'exemple est juste un hypothétique, mais voulait s'assurer que ce n'était pas la raison de l'étrange comportement.
Remarque, ce n'est pas testée! Veuillez enregistrer votre classeur avant de les essayer!