Ne pas compté les doublons sauf 0
Résolu
Erakmur
-
Erakmur -
Erakmur -
A voir également:
- Excel unique sans 0
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Numéro de téléphone excel 0 - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
7 réponses
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!
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.
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.
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
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
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.
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