Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Formule magique plus

32 réponses
Avatar
HB
Bonsoir,

Je ne crois pas être totalement nul
mais certaines formules me laissent pantois ...

Pour obtenir le nombre de valeurs distinctes dans B2:B700
je sais que la formule "matricielle" suivante fonctionne

{=SOMME(SI(B2:B700<>"";1/NB.SI(B2:B700;B2:B700)))}

Toutefois, je ne comprends pas du tout comment elle fonctionne.

En plus il faudrait que j'ajoute un argument conditionnel
faisant référence à la colonne A.

En effet je voudrais le
nombre de valeurs distinctes de B2:B700
parmi celles qui correspondent à la valeur "XXX" dans la colonne A
(les valeurs dans la colonne A seront au format texte...).

(if you see what I mean)

Merci d'avance aux supers cracks des formules qui voudront bien avoir
pitié de mes pauvres neurones...

Cordialement,

HB

---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus

10 réponses

1 2 3 4
Avatar
HB
Bonsoir Isabelle,
Il m'a fallu un peu de temps, après être rentré du boulot ... pour
comprendre ce que faisait cette formule.
Le *(anniv>0) ne sert pas car il n'y a pas de date absente
dans la zone Anniv
et
Lignes(Anniv) donnera donc toujours l'effectif total (745)
et finalement, tout ça ne fait que donner leffectif des 3EME1 et ensuite
cela soustrait 1
Cela n'a pas l'effet cherché
Je me suis sans doute fort mal exprimé ce qui n'est pas surprenant car
au départ tout ça était assez trouble pour moi.
Je commence à y voir plus clair et je crois que mon dernier message
(Réponse à LSteph) est nettement plus clair.
Amicalement,
HB
( oui B ;o)
Le 03/06/2016 à 16:55, isabelle a écrit :
bonjour HD,
si j'ai bien compris,
cette matricielle devrait être ok
=NB(SI((Classe="3EME1")*(Anniv>0)*LIGNES(Anniv);1))-1
isabelle
Le 2016-06-01 à 13:02, HB a écrit :
Merci beaucoup,
je garde ce classeur exemple dans un lieu sûr.
J'ai une question (encore ...) à propos des formules matricielles...
J'essaye de comprendre comment fonctionne tout ça
... je tente de progresser lentement ...
Si TOTO est le nom d'un plage ( type D2:D746)
La formule matricielle somme(1/nb.si(TOTO;TOTO))
fonctionne, bien sûr.
J'essaye de remplacer la référence à TOTO
par "son contenu" (puisqu'il s'agit d'une formule matricielle...)
mais là ... ça veut pas ... j'ai pas tout compris, visiblement ;o)
Un classeur valant mieux qu'un long discours,
tout est là :
http://www.cjoint.com/c/FFbq2jorNNC
Merci d'avance,
Cordialement,
HB
Le 01/06/2016 à 04:27, isabelle a écrit :
plutôt j'aurais du écrire,
l'ordre du 1er et 2ème argument de EQUIV
A1:A700&B1:B700&C1:C700
n'a pas d'importance sauf que ces 2 arguments doivent être identique.
isabelle

---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel
antivirus Avast.
https://www.avast.com/antivirus


---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
Avatar
LSteph
le sujet me tarabuste autant qu'un cas que j'ai rencontré avec un maxi mum si!
Si tu l'effectue tout seul il marche si tu intègre à autre chose ca bug
pourtant l'expression intégrée dans la formule recouvre la mà ªme matrice
--
LSteph
Le vendredi 3 juin 2016 18:44:30 UTC+2, HB a écrit :
Bonsoir Isabelle,
Il m'a fallu un peu de temps, après être rentré du boulot ... pour
comprendre ce que faisait cette formule.
Le *(anniv>0) ne sert pas car il n'y a pas de date absente
dans la zone Anniv
et
Lignes(Anniv) donnera donc toujours l'effectif total (745)
et finalement, tout ça ne fait que donner leffectif des 3EME1 et ens uite
cela soustrait 1
Cela n'a pas l'effet cherché
Je me suis sans doute fort mal exprimé ce qui n'est pas surprenant c ar
au départ tout ça était assez trouble pour moi.
Je commence à y voir plus clair et je crois que mon dernier message
(Réponse à LSteph) est nettement plus clair.
Amicalement,
HB
( oui B ;o)
Le 03/06/2016 à 16:55, isabelle a écrit :
bonjour HD,
si j'ai bien compris,
cette matricielle devrait être ok
=NB(SI((Classe="3EME1")*(Anniv>0)*LIGNES(Anniv);1))-1
isabelle
Le 2016-06-01 à 13:02, HB a écrit :
Merci beaucoup,
je garde ce classeur exemple dans un lieu sûr.
J'ai une question (encore ...) à propos des formules matricielles ...
J'essaye de comprendre comment fonctionne tout ça
... je tente de progresser lentement ...
Si TOTO est le nom d'un plage ( type D2:D746)
La formule matricielle somme(1/nb.si(TOTO;TOTO))
fonctionne, bien sûr.
J'essaye de remplacer la référence à TOTO
par "son contenu" (puisqu'il s'agit d'une formule matricielle...)
mais là ... ça veut pas ... j'ai pas tout compris, visibleme nt ;o)
Un classeur valant mieux qu'un long discours,
tout est là :
http://www.cjoint.com/c/FFbq2jorNNC
Merci d'avance,
Cordialement,
HB
Le 01/06/2016 à 04:27, isabelle a écrit :
plutôt j'aurais du écrire,
l'ordre du 1er et 2ème argument de EQUIV
A1:A700&B1:B700&C1:C700
n'a pas d'importance sauf que ces 2 arguments doivent être ident ique.
isabelle

---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel
antivirus Avast.
https://www.avast.com/antivirus

---
L'absence de virus dans ce courrier électronique a été v érifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
Avatar
HB
Toutafé ! ;o)
Je me suis demandé si en fait, il n'y aurait pas une histoire
d'orientation... mais j'ai testé avec les mêmes séries de valeurs
la fameuse somme(1/nb.si(plage1;plage2))
avec plage1 et plage2 horizontales ou verticales
et
les 4 combinaisons donnent le résultat attendu ...
Je donne ma langue au chat ;o)
HB
Le 03/06/2016 à 21:13, LSteph a écrit :
le sujet me tarabuste autant qu'un cas que j'ai rencontré avec un maximum si!
Si tu l'effectue tout seul il marche si tu intègre à autre chose ca bug
pourtant l'expression intégrée dans la formule recouvre la même matrice
--

---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
Avatar
LSteph
..j'ai aussi tenté des transpose
pas mieux!
Le vendredi 3 juin 2016 21:38:51 UTC+2, HB a écrit :
Toutafé ! ;o)
Je me suis demandé si en fait, il n'y aurait pas une histoire
d'orientation... mais j'ai testé avec les mêmes séries de valeurs
la fameuse somme(1/nb.si(plage1;plage2))
avec plage1 et plage2 horizontales ou verticales
et
les 4 combinaisons donnent le résultat attendu ...
Je donne ma langue au chat ;o)
HB
Le 03/06/2016 à 21:13, LSteph a écrit :
le sujet me tarabuste autant qu'un cas que j'ai rencontré avec un maximum si!
Si tu l'effectue tout seul il marche si tu intègre à autre ch ose ca bug
pourtant l'expression intégrée dans la formule recouvre la m ême matrice
--

---
L'absence de virus dans ce courrier électronique a été v érifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
Avatar
isabelle
bonjour HD,
la formule =SI(Classe=I$1;Anniv;"") n'est pas une matrice,
la plage "Anniv2" fait référence à un ensemble de cellule, dont chacune d'elle
contient la formule =SI(Classe=I$1;Anniv;""), cette plage est une matrice.
http://www.cjoint.com/c/FFedifKwBFa
dans le fichier j'ai du transformé les données de la colonne A avec la formule
ÚTE(DROITE(A2;4);STXT(A2;4;2);GAUCHE(A2;2))
pour transformer les dates au format universelle ISO (aaaa-mm-jj) car le format
01/01/2000 ne fonctionne pas sur mon pc.
aussi la formule matricielle a été réduite grâce aux plages nommées
=NB(SI((Classe=$I$1);1/FREQUENCE(EQUIV(Classe&Anniv;Classe&Anniv;0);LIGNE((Classe)))))
isabelle
Le 2016-06-03 à 15:38, HB a écrit :
Toutafé ! ;o)
Je me suis demandé si en fait, il n'y aurait pas une histoire d'orientation...
mais j'ai testé avec les mêmes séries de valeurs
la fameuse somme(1/nb.si(plage1;plage2))
avec plage1 et plage2 horizontales ou verticales
et
les 4 combinaisons donnent le résultat attendu ...
Je donne ma langue au chat ;o)
HB
Avatar
isabelle
il y avais un petit ménage de parenthèse qui restait à faire
=NB(SI(Classe=$I$1;1/FREQUENCE(EQUIV(Classe&Anniv;Classe&Anniv;0);LIGNE(Classe))))
isabelle
Avatar
isabelle
...avant de me retrouver au fond de la geôle, je fait amande honorable... %-(
...> j'ai du transformer
...> il y avait
pardon mon ange, big bizou à l'au delà.
isabelle
Avatar
isabelle
Avatar
LSteph
bonjour zaza,
Pour moi (ce qui n'engage que moi) {0;1;2} c'est déjà une matrice ! matrice de valeurs.
Cela doit être une question de dénomination (je n'ai pas la mà ªme mais peux me tromper)
On a bien repéré que le nb.si semble fonctionner avec la plage de cellule en dur et pas avec le nom s'il ne réfère pas directeme nt à cette plage (en dur)
Anniv est un nom qui désigne une plage tout comme classe
Anniv2 aussi qui utilise la formule =SI(Classe=I$1;Anniv;"")
Lorsqu'on va en zone formule dans le nb.si et qu'on appuie sur F9
en surlignant on obtient exactement la même "matrice de valeurs" {"_"; "...
c'est pourquoi on s'étonne sur le fait que nb.si réagisse si on l ui désigne la plage de cellule et pas si on lui mets une formule qui r envoie strictement la même chose.
Cordialement.
Amitiés.
--
LSteph
Le samedi 4 juin 2016 05:17:32 UTC+2, isabelle a écrit :
bonjour HD,
la formule =SI(Classe=I$1;Anniv;"") n'est pas une matrice,
la plage "Anniv2" fait référence à un ensemble de cellule, dont chacune d'elle
contient la formule =SI(Classe=I$1;Anniv;""), cette plage est une mat rice.
http://www.cjoint.com/c/FFedifKwBFa
dans le fichier j'ai du transformé les données de la colonne A avec la formule
ÚTE(DROITE(A2;4);STXT(A2;4;2);GAUCHE(A2;2))
pour transformer les dates au format universelle ISO (aaaa-mm-jj) car le format
01/01/2000 ne fonctionne pas sur mon pc.
aussi la formule matricielle a été réduite grâce aux plages nommées
=NB(SI((Classe=$I$1);1/FREQUENCE(EQUIV(Classe&Anniv;Classe&Anniv;0);L IGNE((Classe)))))
isabelle
Le 2016-06-03 à 15:38, HB a écrit :
Toutafé ! ;o)

Je me suis demandé si en fait, il n'y aurait pas une histoire d'or ientation...
mais j'ai testé avec les mêmes séries de valeurs
la fameuse somme(1/nb.si(plage1;plage2))
avec plage1 et plage2 horizontales ou verticales
et
les 4 combinaisons donnent le résultat attendu ...
Je donne ma langue au chat ;o)
HB
Avatar
HB
ah oui :o)
Le 04/06/2016 à 07:23, isabelle a écrit :
et je fais

---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
1 2 3 4