Monsieur Excel
Pour tout savoir faire sur Excel !

01 juin 2007

Calcul du nombre de modalités

Les fonctions de base de données, les fonctions BD…() d’Excel, sont assez nombreuses. On peut ainsi calculer le max, le min, la moyenne, l’écart-type, la variance... des fiches d’une base qui correspondent à des critères spécifiques. Il en manque cependant une, celle qui calculerait le nombre de
« modalités » d’une colonne, c’est-à-dire le nombre d’éléments différents qu’elle contient.

Nous vous proposons deux solutions, toutes les deux sous la forme de formules matricielles, donc validées avec la combinaison [Ctrl]-[Maj]-[Entrée].

La formule entrée en D1 est la suivante :
=somme(si(equiv(A2:A14;A:A;0)=ligne(A2:A14);1;0))

Le principe en est en fait assez simple : les valeurs originales sont celles dont le numéro de ligne est celui de la première ligne où l’on trouve cette valeur dans la colonne.

Remarque – La formule précédente peut être simplifiée en ôtant le si(). En effet, quand on multiplie VRAI par 1, on obtient le résultat 1. Voici donc la formule simplifiée, entrée en D2 :
= somme(1*(equiv(A2:A14;A:A;0)=ligne(A2:A14)))

4 Commentaire(s):

  • joli!

    Sinon ca ne serait pas plutôt
    = somme(1*(equiv(A2:A14;A:A;0)=(ligne(A2:A14)-1)))

    Car le equiv commence à compter à partir de la ligne 2

    By Anonymous Anonyme, sur 11:54 AM  

  • Il ne faut surtout pas soustraire "1" comme vous le faites. Dans ce cas, sur mon exemple, cela aboutit à la valeur "0" !

    Ligne() renvoie la position dans la colonne A:A, pas dans le bloc A2:A14...

    By Blogger Hervé Thiriez, sur 1:00 PM  

  • 1°/ La formule ne marche que si A2:A14 contient des valeurs.
    Peux-t-on faire un équivalent avec un résultat de calcul ?

    2°/ ne marche pas non plus si la zone de recherche (Ex:A62:A74)est en plein milieu d'autres données

    equiv(A62:A74;A62:A74;0) ne marche pas ...
    Quelle est l'astuce pour y arriver ?

    By Anonymous Anonyme, sur 12:45 PM  

  • réponse à 2°/ de Anonyme
    La formule modifiée marche:
    Ex:zone de E22:E34
    =SOMME(SI(EQUIV(E22:E34;E22:E34;0)=(LIGNE(E22:E34)+1-LIGNE(E22));1;0))

    toujours en matriciel (Ctrl+Maj+Entrée)

    Mr Excel peut mettre à jour son Blog...

    By Anonymous Anonyme, sur 2:40 PM  

Enregistrer un commentaire

<< Accueil