0
(0)

Article à partir de la demande d'un utilisateur du forum.

Problème

L'utilisateur veut calculer la moyenne des notes en utilisant la moyenne géométrique et non arithmétique. Il désire décomposer les résultats par matière et par étudiant.

Les notes n'étant pas "dépendantes" les unes des autres, je ne comprends pas trop l'intérêt de ce choix mais n'étant pas mathématicien je vais éviter de faire preuve ultracrépidarianisme (ça en jette ! 😁).

Voir https://fr.wikipedia.org/wiki/Moyenne_g%C3%A9om%C3%A9trique

Excel met à notre disposition la fonction MOYENNE.ENS mais il s'agit ici de la moyenne arithmétique, il va donc falloir faire une formule dédiée.

Je vous propose 3 solutions (version du futur 😊, actuelle, ancienne)

Données de test

Données de base pour la formule de la moyenne géométrique conditionnelle

Principe du calcul

On va repartir de l'équation de base.

Formule de la moyenne géométrique

(Fonction MOYENNE.GEOMETRIQUE - Support Microsoft)

La racine sera générée en élevant à la puissance inverse.

Solution 1 : En une formule via la nouvelle fonction PIVOTER.PAR

Voir Les nouvelles fonctions GROUPER.PAR (GROUPEBY) et PIVOTER.PAR (PIVOTBY)

=PIVOTER.PAR(A2:A20 ; C2:C20 ; B2:B20 ; LAMBDA(v;PRODUIT(v)^(1/NB(v)));0;0;1;0;1)
  • On utilise ici une fonction de calcule personnalisée (Rappel : le signe ^ est l'élévation à la puissance).
Formule pour la moyenne géométrique conditionnelle via la fonction PIVOTER.PAR

Solution 2 : En 3 formules

Formule 1 : Liste des étudiants

=TRIER(UNIQUE(A2:A20))

Formule 2 : Liste des matières

=TRANSPOSE(TRIER(UNIQUE(C2:C20)))

Formule 3 : La moyenne

Formule à recopier en ligne et colonne

=LET(m;FILTRE($B$2:$B$20;($A$2:$A$20=$E3)*($C$2:$C$20=F$2));PRODUIT(m)^(1/NB(m)))
  • m : matrice des valeurs (note) correspondantes à la ligne (étudiant) et à la colonne (matière).
3 formules pour la moyenne géométrique conditionnelle

Solution 3 : Anciennes versions d'Excel

Formules matricielles donc à valider par CTRL+MAJ+ENTRER

Voir Excel et les matrices (pas celles du cours de mathématiques)

Formule 1 : Liste des étudiants

{=SIERREUR(
    INDEX(Pl_Prenom;
      PETITE.VALEUR(
         SI(FREQUENCE(
              SI(Pl_Prenom<>"";EQUIV(Pl_Prenom;Pl_Prenom;0));
              LIGNE(Pl_Prenom)-1);
            LIGNE(Pl_Prenom)-1);
      LIGNES(E$3:E3))
          );
    "")}

Mise en œuvre intéressante de la fonction FREQUENCE et PETITE.VALEURS dans ce cas.

  • Pl_Prenom : Plage des prénoms ($A$2:$A$20).
  • => On cherche la position de la 1ere occurrence de chaque prénom.
    • SI(Pl_Prenom<>"";EQUIV(Pl_Prenom;Pl_Prenom;0)) : Matrice représentant la position de la 1ere occurrence de chaque prénom.
      • Ici {1;1;1;1;1;1;7;7,... 13} => sera utilisée comme la matrice des données dans la fonction FREQUENCE.
  • => On va maintenant chercher à éliminer les répétitions de n° de lignes dans la matrice.
    • LIGNE(Pl_Prenom)-1) : Matrice constituée d'une séquence de valeurs.
      Ici {1;2;3,... 19} => sera utilisée comme la matrice des classes pour la fonction FREQUENCE.
    • La fonction FREQUENCE renvoie la matrice suivante {6;0;0;0;0;0;6;0;0;0;0;0;7;0;0;0;0;0;0}
      • On a perdu les numéros de lignes mais on sait que les valeurs à "ignorées" sont celles à 0.
  • => On va maintenant chercher à rétablir les n° de lignes correspondantes aux plus petites valeurs de la matrice précédente mais seulement celle différentes de 0 afin de les "extraire" avec la fonction PETITE.VALEUR.
    • Il faudra donc remplacer les 0 par une valeur qui ne sera non pris en compte par la fonction PETITE.VALEUR (valeur FAUX).
    • On va donc faire évaluer la formule : SI( {6;0;0;0;0;0;6;0;0;0;0;0;7;0;0;0;0;0;0} ; {1;2;3,... 19})
      • Les valeurs 0 seront considérées comme FAUX, par conséquent la fonction SI renverra la partie "Valeur_si_faux". Celle-ci n'étant pas précisée, on obtient la valeur logique FAUX.
      • Les valeurs différentes de 0 seront considérées comme VRAI, par conséquent la fonction SI renvoie la partie "Valeur_si_vrai" soit les n° de lignes.
      • On obtient la matrice {1;FAUX;FAUX;FAUX;FAUX;FAUX;7;FAUX;FAUX;FAUX;FAUX;FAUX;13;FAUX;FAUX;FAUX;FAUX;FAUX;FAUX}.
  • => On va maintenant prendre la 1ere, 2eme ... plus petites valeurs (selon la recopie de la formule).
    • A la recopie LIGNES(E$3:E3) reverra 1, 2 3 etc. permettant de "piocher" les bons n° de ligne via la fonction PETITE.VALEUR.
    • INDEX n'a plus qu'à effectuer son travail.

Formule 2 : Liste des matières

{=SIERREUR(
    INDEX(Pl_Mat;
      PETITE.VALEUR(
         SI(FREQUENCE(
               SI(Pl_Mat<>"";EQUIV(Pl_Mat;Pl_Mat;0));
               LIGNE(Pl_Mat)-1);
             LIGNE(Pl_Mat)-1);
      COLONNES($F2:F2))
        );
"")}

Formule 3 : La moyenne

{=PRODUIT(SI((Pl_Prenom=$E3)*(Pl_Mat=F$2)<>0;$B$2:$B$20))^(1/SOMME((Pl_Prenom=$E3)*(Pl_Mat=F$2)))}

3 formules pour la moyenne géométrique conditionnelle compatible avec les anciennes versions d'Excel

Merci pour votre attention bienveillante.

Article intéressant ?

Cliquez sur une étoile pour noter cet article !

Note moyenne 0 / 5. Nombre de votes : 0

Aucun vote pour l'instant ! Soyez le premier à noter ce post.

Nous sommes désolés que cet article ne vous ait pas été utile !

Améliorons cet article !

Dites nous comment nous pouvons améliorer cet article ?

Publications similaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *