Ne pas compté les doublons sauf 0
Résolu/Fermé
A voir également:
- Ne pas compté les doublons sauf 0
- Créer un compte google - Guide
- Créer un compte gmail - Guide
- Supprimer les doublons excel - Guide
- Supprimer compte instagram - Guide
- Créer un compte instagram sur google - Guide
7 réponses
Vaucluse
Messages postés
26496
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
1 avril 2022
6 418
Modifié le 22 août 2017 à 16:28
Modifié le 22 août 2017 à 16:28
Bon,jour
Mon PC ne me donne pas l'accès à cjoint .
A défaut de voir votre modèle, voyez si vous pouvez tirer quelque chose de cet exemple, et si problème déposez votre fichier sur le site où vous avez trouvé le mien
à vous lire
https://mon-partage.fr/f/1cjpLk8x/
crdlmnt
La qualité de la réponse dépend surtout de la clarté de la question, merci!
Mon PC ne me donne pas l'accès à cjoint .
A défaut de voir votre modèle, voyez si vous pouvez tirer quelque chose de cet exemple, et si problème déposez votre fichier sur le site où vous avez trouvé le mien
à vous lire
https://mon-partage.fr/f/1cjpLk8x/
crdlmnt
La qualité de la réponse dépend surtout de la clarté de la question, merci!
Vaucluse
Messages postés
26496
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
1 avril 2022
6 418
22 août 2017 à 17:34
22 août 2017 à 17:34
Bonour effectivement c'est un peu lus complexe
compte tenu du volume de données traitées, j'hésite à creuser ça en matricielle et en plus je ne suis pas sur de trouver et je ne peux vous donner qu'un conseil
ajouter une colonne dans la feuille Formule DI, par exemple en L avec cette formule:
=SI(OU(NB.SI($A$2:A2;A2)>1=1;A2=0);1;0)
attention au blocage du 1° A2et pas du second dans les limites de champ
et rajoutez une condition à votre formule SOMMEPROD: ...*(L2:L40000=1)
à moins que quelqu'un trouve mieux ce qui reste fort possible
crdlmnt
compte tenu du volume de données traitées, j'hésite à creuser ça en matricielle et en plus je ne suis pas sur de trouver et je ne peux vous donner qu'un conseil
ajouter une colonne dans la feuille Formule DI, par exemple en L avec cette formule:
=SI(OU(NB.SI($A$2:A2;A2)>1=1;A2=0);1;0)
attention au blocage du 1° A2et pas du second dans les limites de champ
et rajoutez une condition à votre formule SOMMEPROD: ...*(L2:L40000=1)
à moins que quelqu'un trouve mieux ce qui reste fort possible
crdlmnt
L'idée de créer un colonne en plus peut être bonne mais le résultat de ta formule n'est pas correcte je pense. La formule doit afficher 1 si la colonne A = 0. S'il y a un seul nombre unique différent de 0, elle affiche 1. Pour les cellules vides, elle affiche rien. Jusque la, c'est pas trop dur mais si il y a plusieurs nombres identiques différents de 0, elle doit afficher la première occurrence à 1 et les autres rien et là c'est plus difficile.
mdo100
Messages postés
126
Date d'inscription
jeudi 9 décembre 2010
Statut
Membre
Dernière intervention
21 février 2019
22
22 août 2017 à 18:34
22 août 2017 à 18:34
Bonjour Erakmur, Vaucluse,
Je ne peux pas ouvrir les fichiers joints.
Toutefois je tente ma chance.
Dans la colonne "A" de "A2 à A50"
Formule matricielle a valider avec ctrl + maj + entrée
Cordialement.
Je ne peux pas ouvrir les fichiers joints.
Toutefois je tente ma chance.
Dans la colonne "A" de "A2 à A50"
Formule matricielle a valider avec ctrl + maj + entrée
=NBVAL($A$2:$A$50)-SOMME(N(NB.SI($A$2:$A$50;$A$2:$A$50)=1))+NB.SI($A$2:$A$50;"=0")
Cordialement.
ccm81
Messages postés
10905
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
27 décembre 2024
2 428
Modifié le 23 août 2017 à 11:57
Modifié le 23 août 2017 à 11:57
Bonjour à tous
Peut être avec une petite macro (sur ma vieille machine, elle met moins d'une seconde pour trouver les 16329 valeurs sans doublon et 17737 en y ajoutant les 0)
Cdlmnt
Peut être avec une petite macro (sur ma vieille machine, elle met moins d'une seconde pour trouver les 16329 valeurs sans doublon et 17737 en y ajoutant les 0)
Const FFDI As String = "Formule DI" Const lideb As Byte = 2 Const coNOT As String * 1 = "A" Public Function NbNumOT() As Long Dim li As Long, lifin As Long, nb As Long Dim dico As Object, cle, valeur As Long, cles, valeurs, nbcles As Long Set dico = CreateObject("scripting.dictionary") nb = 0 With Sheets(FFDI) lifin = .Range(coNOT & Rows.Count).End(xlUp).Row For li = lideb To lifin cle = .Range(coNOT & li).Value If cle <> "" Then If dico.exists(cle) Then If cle = 0 Then dico(cle) = dico(cle) + 1 nb = nb + 1 End If Else dico.Add cle, 1 nb = nb + 1 End If End If Next li End With nbcles = dico.Count NbNumOT = nb End Function
Cdlmnt
Bonjour,
Je vais simplifier le problème en m'inspirant des remarques de Vaucluse. Dans la colonne L de l'onglet Formule DI, il me faudrait une macro ou une fonction excel qui fasse la chose suivante:
La formule doit afficher 1 si la colonne A = 0. S'il y a un seul nombre unique différent de 0, elle affiche 1. Pour les cellules vides, elle affiche rien. Jusque la, c'est pas trop dur mais si il y a plusieurs nombres identiques différents de 0, elle doit afficher la première occurrence à 1 et les autres rien et là c'est plus difficile. Ainsi voici l'exemple:
Colonne A Colonne L
1 1
2 1
3 1
4 1
1
1
5 1
6 1
5
7 1
7
9 1
10 1
0 1
0 1
Je vais simplifier le problème en m'inspirant des remarques de Vaucluse. Dans la colonne L de l'onglet Formule DI, il me faudrait une macro ou une fonction excel qui fasse la chose suivante:
La formule doit afficher 1 si la colonne A = 0. S'il y a un seul nombre unique différent de 0, elle affiche 1. Pour les cellules vides, elle affiche rien. Jusque la, c'est pas trop dur mais si il y a plusieurs nombres identiques différents de 0, elle doit afficher la première occurrence à 1 et les autres rien et là c'est plus difficile. Ainsi voici l'exemple:
Colonne A Colonne L
1 1
2 1
3 1
4 1
1
1
5 1
6 1
5
7 1
7
9 1
10 1
0 1
0 1
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 248
23 août 2017 à 12:22
23 août 2017 à 12:22
Bonjour,
La prochaine fois met un fichier de 50 lignes, ça suffit.
18 Mo, compressé en .rar que tout le monde n'a pas en plus, ça dissuade...
eric
=--SI(ET(A2=0;A2<>"");1;EQUIV(A2;A:A;0)=LIGNE())
La prochaine fois met un fichier de 50 lignes, ça suffit.
18 Mo, compressé en .rar que tout le monde n'a pas en plus, ça dissuade...
eric
Vaucluse
Messages postés
26496
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
1 avril 2022
6 418
23 août 2017 à 12:40
23 août 2017 à 12:40
Bonjour
il y avait effectivement juste une petite coquille dans la formule (c'est ma spécialité):
=SI(OU(NB.SI($A$2:A2;A2)=1;A2=0);1;0)
peut être à compléter pour les lignes sans N° et sans 0, pour qu'elle n'affiche pas 1 (c'est au choix)
:
=SI(A2="";"";SI(OU(NB.SI($A$2:A2;A2)=1;A2=0);1;0))
crdlmnt
il y avait effectivement juste une petite coquille dans la formule (c'est ma spécialité):
=SI(OU(NB.SI($A$2:A2;A2)=1;A2=0);1;0)
peut être à compléter pour les lignes sans N° et sans 0, pour qu'elle n'affiche pas 1 (c'est au choix)
:
=SI(A2="";"";SI(OU(NB.SI($A$2:A2;A2)=1;A2=0);1;0))
crdlmnt
Les solutions de vaucluse et d'eriiic fonctionnent très bien. J'ai donc modifié l'onglet EST en conséquence en rajoutant *('Formule DI'!$L$2:$L$40000=1) à la formule du sommeprod. J'ai modifié la formule de Vaucluse en =SI(A2="";"0";SI(OU(NB.SI($A$2:A2;A2)=1;A2=0);1;0)) sinon, il y avait 3 solutions possibles.
22 août 2017 à 16:59
Je pense que ta formule va multiplier le nombre et pas compter le nombre de cellule concernée. Avec le fichier, cela sera plus parlant je pense