Monsieur Excel
Pour tout savoir faire sur Excel !

16 avril 2015

Modalités, valeurs différentes (b)

Dans l’article précédent, nous avons vu comment – à l’aide de formules non matricielles – calculer le nombre de modalités différentes dans un vecteur vertical, et le nombre de valeurs différentes.

Aujourd’hui, nous vous proposons deux formules nouvelles, matricielles.

Formule de D1 : =somme(si(estnum($A$1:$A$13)*ligne($1:$13)=equiv($A$1:$A$13;A:A;0);1))
Formule de D2 : =somme(si(ligne($1:$13)=equiv($A$1:$A$13;A:A;0);1))
Ces deux formules sont matricielles, donc validées avec [Ctrl]-[Maj]-[Entrée].

Tant qu’il n’y a aucune cellule vide dans le vecteur, les résultats sont identiques à ceux de C1:C2.


On peut aussi les écrire sans utiliser le si() :

Formule de D1 :
=somme(estnum($A$1:$A$13)*(ligne($1:$13)=equiv($A$1:$A$13;A:A;0);1)))
Formule de D2 : =somme(1*(ligne($1:$13)=equiv($A$1:$A$13;A:A;0);1)))

Ce qui est étrange, c’est ce qui se passe quand il y a une cellule vide dans le vecteur :
  • quand il n’y a aucun 0, C2 donne #DIV/0!, D1 et D2 donnent #N/A
  • quand C2 donne un résultat non entier, D1 et D2 donnent le bon résultat.
  • quand C2 affiche un résultat entier, C2 affiche un nombre trop grand d’une unité car il compte la cellule vide comme une modalité.
Nous avons donc deux solutions, grâce aux formules en C1:C2 et D1:D2. Mais aucune des deux ne parvient à bien gérer le cas où au moins une cellule du vecteur est vide…

Si quelqu’un a une bonne idée pour résoudre ce problème, nous afficherons sa solution !

2 Commentaire(s):

  • Pour D3
    La même avec Sierreur
    =SOMME(SI(LIGNE($1:$13)=SIERREUR(EQUIV($A$1:$A$13;A:A;0);"vide");1))

    Arnaud

    By Anonymous Anonyme, sur 9:06 PM  

  • Excellente suggestion, Arnaud !

    By Blogger Hervé Thiriez, sur 11:27 PM  

Enregistrer un commentaire

<< Accueil