OVH Cloud OVH Cloud

Compter les valeurs uniques

23 réponses
Avatar
Michir
Bonjour à tous,
Merci à Jacqouille pour sa réponse sur compter les doublons
La formule matricielle qu'il me conseille
=SOMME(N(FREQUENCE(C4:C51;C4:C51)>0))
fonctionne parfaitement, sauf quand j'ai une valeur texte
Je m'explique, j'ai une colonne avec une série de numéros de commandes
4364,4365,4365,43666-7, 4366-7
La formule devrait me compter 3 alors qu'elle me compte 2
Elle ignore les valeurs textes parcequ'il y a un tiret
Comment faire pour compter les valeurs uniques qui prenne en compte les
valeurs texte ?
Merci

3 réponses

1 2 3
Avatar
Jacquouille
Nous serons vite le 1er Nov. Je vais raviver la flemme du souvenir chez les
anciens. -)
A la lecture de tes réponses dans ce fil, je crois que les vacances t'on
profité. Tes explik sont dignes du Parthénon Excellien de la mère Flo.
Mille et deux mercis et bonne fin de WE

--
Bien amicalmement,
Vivement conseillés:
http://www.excelabo.net
http://jacxl.free.fr/mpfe/trombino.html
http://dj.joss.free.fr/netiquet.htm
http://frederic.sigonneau.free.fr/

Jacquouille.

"AV" a écrit dans le message de news:

Poétiquement parlant, la première cel vide ne devrait-elle pas être
considérée comme unique et les suivantes comme doux blonds? -)


C'est comme on veut :
http://cjoint.com/?itjHbgEgVk

PS Il ne faudra pas oublier de relancer les cotisations pour la SPA.


Hum... il en reste si peu qui savent encore ce que c'est ...
Et puis comme je suis parti avec la caisse, je ne souhaiterais pas que...

AV




Avatar
Michir
Jacky
Merci pour ton dernier message (je le trouve en rentrant de we)
Mille excuses, effectivement dans mes chiffres j'ai fait une erreur sur
43666-7, je voulais écrire 4366-7. La formule devrait ainsi me trouver
trois valeurs uniques
Merci encore pour ton aide
Michel

Et poutant, je n'ai fait que reprendre tes chiffres

Je m'explique, j'ai une colonne avec une série de numéros de commandes
4364,4365,4365,43666-7, 4366-7


Mais cela ne change rien au problème.

JJ

"Michir" a écrit dans le message de
news:44e61b85$0$1025$

En A3, tu as mis un 6 de trop
Michel



RE...


Cela ne fonctionne pas Jacky, c'est même encore plus faux puisque cela
me renvoie 2 au lieu de 5 sur mon exemple



Ah!! bon....
Avec tes chiffres comme exemple:
Voir ici:
http://cjoint.com/?isvIPTbRkE
JJ












Avatar
Jacky
Re....
Je viens de reprendre, la lecture des News.

Merci beaucoup Alain.
C'est vraiment gentil de ta part.
Vu comme cela, cela parait limpide et je pense avoir compris.
Je vais essayer de l'adapter à mon problème du même genre.

Salutations
JJ



"AV" a écrit dans le message de
news:
"....tu m'expliques ..."

C'est bien parceque c'est toi...;-)


=MIN(SI((JOUR($A$1+LIGNE(INDIRECT("14:1000")))<29)*(JOURSEM($A$1+LIGNE(INDIR

ECT("14:1000"));2)<6)*(ESTNA((EQUIV($A$1+LIGNE(INDIRECT("14:1000"));JrF;0)))
);$A$1+LIGNE(INDIRECT("14:1000"))))


La formule n'ayant de sens que par rapport à la question initiale, rappel
de

celle-ci (fil du 18/08/2006 14:13) :
"Trouver le 14ième jour (Xième) après une date D (A1 = 15/06/2006)"
"Si le Xième jour après D tombe un samedi ou un dimanche, ou un jour
au-delà du

28° du mois ou un jour férié (plage de référence pour les jours fériés),
ajouter

1 et cela autant de fois que nécessaire."

L 'idée est donc de créer une série de jours au-delà du Xième demandé et
de

retenir le 1° qui répond aux exigences
Tout d'abord, pour des commodités de tests, remplacer 1000 par 100 dans la
formule
Dans la formule, le "noud de la chose" est la partie
$A$1+LIGNE(INDIRECT("14:100"))
C 'est ce qui permet de créer une matrice des jours qui vont de A1 + 14 à
A1 +

100
Ca donne : {38897;38898;38899;38900;38901;38902;..;38983}
Pour visualiser ce résultat intermédiaire, sélectionner dans la barre de
formule

$A$1+LIGNE(INDIRECT("14:100")) et faire F9

Au travers de 3 tests logiques, on va chercher quel est la 1° date (le
MIN) de

cette série qui respecte, simultanément (fonction ET), les 3 conditions
indiquées
Rappel : Dans une formule matricielle, on remplace la fonction ET par
l'opérateur *

1° test : le jour ne doit pas être > au 28° du mois
(JOUR($A$1+LIGNE(INDIRECT("14:100")))<29)
Résultat intermédiaire (visualiser par sélection et F9) :
{FAUX;FAUX;VRAI;VRAI;VRAI;VRAI;...;VRAI}

2° test : le jour ne doit pas être samedi ou dimanche
(JOURSEM($A$1+LIGNE(INDIRECT("14:100"));2)<6)
Résultat intermédiaire (visualiser par sélection et F9) :
{VRAI;VRAI;FAUX;FAUX;VRAI;VRAI;...;FAUX}

3° test : le jour ne doit pas être un jour férié
(ESTNA((EQUIV($A$1+LIGNE(INDIRECT("14:100"));JrF; 0))))
Résultat intermédiaire (visualiser par sélection et F9) :
{VRAI;VRAI;VRAI;VRAI;FAUX;VRAI;...;VRAI}

Résultat intermédiaire des 3 tests simultanés (visualiser par sélection et
F9)

:
{FAUX;FAUX;VRAI;VRAI;VRAI;VRAI;...;VRAI} *
{VRAI;VRAI;FAUX;FAUX;VRAI;VRAI;...;FAUX} *
{VRAI;VRAI;VRAI;VRAI;FAUX;VRAI;...;VRAI
Dans la formule matricielle, chaque élément de chacune des matrices étant
multiplié par les 2 autres, le résultat renvoyé par XL est :
{0;0;0;0;0;1;..;0}

On voit là, que le 6° jour après la date D + 14 est le 1° qui répond aux 3
conditions simultanées

La fonction SI renverra le "bon" jour en fonction de ces tests logiques :
SI(Tests Logiques = 1 ; Dates)
Résultat intermédiaire de la fonction SI :
SI({0;0;0;0;0;1;..;0};{38897;38898;38899;38900;38901;38902;..;38983})
donne : ({FAUX;FAUX;FAUX;FAUX;FAUX;38902;...;FAUX}

La fonction MIN permet, ensuite, de ne retenir que la 1° valeur numérique
de la

matrice résultats
= MIN({FAUX;FAUX;FAUX;FAUX;FAUX;38902;...;FAUX})

Résultat : 38902
N° de série qui correspond au mardi 04/07/06 (le 03/07/06 est défini comme
férié)

http://cjoint.com/?iuibkl1kXq

AV




1 2 3