Nombre de modalités - Autre
Nous
avons déjà publié il y a quelques jours un article intitulé « Calcul du nombre de modalités » où nous montrions comment calculer le nombre de
valeurs différentes dans une colonne.
Cette
fonction est en effet une fonction qui manque cruellement à la série des
fonction BD…().
Aujourd’hui, nous rouvrons le sujet pour vous montrer deux nouvelles façons de définir cette fonction.
Formule
de D1 (cf. article précédent) :
=somme(si(equiv(A2:A15;A:A;0)=ligne(A2:A15);1;0))
=somme(si(equiv(A2:A15;A:A;0)=ligne(A2:A15);1;0))
Formule
de D2 (cf. article précédent) :
=somme(1*(equiv(A2:A15;A:A;0)=ligne(A2:A15)))
=somme(1*(equiv(A2:A15;A:A;0)=ligne(A2:A15)))
Formule
de D3 : =sommeprod(1/nb.si(A2:A15;A2:A15))
Les
deux premières formules sont matricielles, donc validées avec [Ctrl]-[Maj]-[Entrée].
La
première formule est assez compréhensible : quand le numéro de la ligne est le
numéro de la première ligne où l’on trouve la valeur considérée, c’est la
première occurrence de cette valeur et cela compte donc pour 1.
La
seconde formule montre que l’on peut très bien remplacer le « si »,
dans une telle situation, par un simple produit par « 1 », qui
a la vertu de transformer les « VRAI » en « 1 ».
La
troisième formule présente le double avantage d’être plus compacte et de ne pas
être une formule matricielle. Nous y notons une particularité : le second
argument, au lieu d’être un élément unique, comme c’est normalement prévu dans
le mode d’emploi de la fonction, est en fait un vecteur.
Quand
nous évaluons la partie nb.si(A2:A15;A2:A15) de la formule, nous obtenons le vecteur {2;1;4;3;1;2;4;1;4;1;1;4;3;3}. On va donc compter 1/ 2 pour chaque élément
apparaissant deux fois, 1/3 pour chaque élément apparaissant trois fois,… Au
total, nous aurons donc le nombre de modalités.
Remarque 1 – Ce n’est pas la première
fois que nous découvrons des ressources inespérées d’Excel en « détournant » le mode d’emploi officiel d’une fonction…
Remarque 2 – Il y a enfin, assez
logiquement, une formule encore plus courte, mais de nouveau matricielle, avec =somme(1/nb.si(A2:A15;A2:A15)). Ce
n'est pas surprenant car, comme nous l'avons déjà expliqué à plusieurs
reprises, la fonction sommeprod() sert souvent à « éviter » une formule matricielle
puisqu'elle génère naturellement une boucle...
0 Commentaire(s):
Enregistrer un commentaire
<< Accueil