Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Formule pour compter combien de fois se trouve une même valeur dans une colonne

Kahina

XLDnaute Nouveau
Bonjour
J'ai une liste de 186 000 références clients dans la colonne A , et je souhaite voir apparaître dans la colonne B le nombre de fois qu'existe cette même référence client dans la colonne A.
J'ai tenté de mettre en avant les doublons par la mise en forme conditionnelle mais cela plante ( fichier trop lourd)
J'ai tenté le tableau croisé dynamique mais je ne peux filtrer et étonnamment je ne retrouve que le chiffre 1 face à la référence client.
Or si je fais une suppression des doublons il m'indique supprimé 79 lignes. ( j'ai besoin de visualiser le codes clients en doublons)
J'ai tenté le nb.si(A:A; ET LA EST MON PB je n'ai pas de critère à saisir).
Il doit exister une autre formule ou bien???
Merci pour votre aide
 

Lolote83

XLDnaute Barbatruc
Salut KAHINA,
En supposant que ta plage de données soit A10:A100
Formule en B10 =NB.SI($A$10:$A$100;A10) te donnera en regard de chaque cellule le nombre de fois ou celle-ci est trouvée.
En espérant avoir bien saisie ta demande
@+ Lolote83
 

chezswan

XLDnaute Occasionnel

Bonjour,

Un suggestion en P.J.

Cdlt
Swan
 

Pièces jointes

  • essais1.xlsx
    9 KB · Affichages: 12

Lolote83

XLDnaute Barbatruc
Salut Chezswan,
Je ne vois pas dan ton exemple ou est la différence avec ce que j'annonce au post#2.
De plus, depuis que j'ai posté ma réponse, je n'ai pas eu de commentaire(s) sur la bonne marche ou non de la réponse.
Bref, notre ami Kahina à maintenant en plus de la syntaxe, un exemple.
@+ Lolote83
 

job75

XLDnaute Barbatruc
Bonjour Kahina, Lolote83, chezswan,

Vous n'avez sûrement pas essayé votre formule NB.SI avec une plage de 186 000 cellules en colonne A !!!

Pour s'en sortir il faut une macro et le Dictionary :
VB:
Sub Doublons()
Dim t#, tablo, resu(), d As Object, i&, n&
t = Timer
tablo = [A1:A186000] 'à adapter, matrice, plus rapide
ReDim resu(1 To UBound(tablo), 1 To 1)
Set d = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(tablo)
    d(tablo(i, 1)) = d(tablo(i, 1)) + 1
Next
For i = 1 To UBound(tablo)
    If d(tablo(i, 1)) > 1 Then resu(i, 1) = "doublon": n = n + 1
Next
[B1].Resize(UBound(tablo)) = resu 'restitution
MsgBox n & " doublons trouvés en " & Format(Timer - t, "0.00 \s")
End Sub
Chez moi elle s'exécute en 0,8 seconde.

A+
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…