0
(0)

Un petit topo sur les fonctions NB.SI, NB.SI.ENS, SOMME.SI, SOMME.SI.ENS, MOYENNE.SI, MOYENNE.SI.ENS, MAX.SI.ENS, MIN.SI.ENS.

Un peu d'histoire

Au début pour faire des dénombrements, des sommes et moyennes que sur une partie des valeurs d'une plage on devait passer par des formules matricielles ou dans certain cas par la fonction SOMMEPROD.

Puis est apparue les fonctions NB.SI et SOMME.SI,
suivie de NB.SI.ENS, SOMME.SI.ENS, MOYENNE.SI, MOYENNE.SI.ENS,
et enfin MAX.SI.ENS, MIN.SI.ENS remplaçant la plupart de ces formules et simplifiant leur structure.

Les fonctions NB.SI, SOMME.SI et MOYENNE.SI sont plus limitées que celles avec .ENS dont je les ai toujours considérées comme obsolètes. D'autant plus que les 2 premières ont une syntaxe dont la logique est "inverse" aux version ENS ce qui peut prêter à la confusion. (Microsoft n'a pas créé MAX.SI ni MIN.SI mais directement la version ENS).

Je ne traiterais donc que les fonctions ENS (ensemble de critères ?) dans cet article.

NB.SI.ENS

La plus simple, qui me permettra de montrer des mécaniques et problèmes communs à cette famille de fonctions.

Rôle

Compter/dénombrer les valeurs répondant à certain critères (caractéristiques).

Syntaxe

= NB.SI.ENS( Plage_critères1 ; Critères1 [ ; Plage_critères2 ...Plage_critères127 ; Critères127] )
  • Plage_critères1 à Plage_critères127 : Plage à évoluer. Ne peut être une matrice ou table dynamique !
  • Critères1 à Critères127 : Nombre, expression, référence de cellule, texte ou matrice déterminant les cellules à prendre en compte.

On utilise des paires d'arguments Plage_critères et Critères pour spécifier où on recherche et ce que l'on recherche.

Toutes les Plage_critères doivent avoir la même taille (même nombre de cellules).

Tableau servant pour tous les exemples

Excel_Fonctions_SI.ENS Tableau de base

Exemples

Recherche sur une valeur numérique ou une date

Excel_Fonctions_NB.SI.ENS valeurs numériques

Recherche sur une chaîne de texte

On peut utiliser :

  • ? pour remplacer une lettre.
  • * pour remplacer 0 ou plusieurs lettres.
Excel_Fonctions_NB.SI.ENS Chaine de texte

Cas des cellules vides

Excel_Fonctions_NB.SI.ENS valeurs vides

Cas de valeurs booléennes

Valeurs logiques VRAI et FAUX.

Excel_Fonctions_NB.SI.ENS valeurs booléennes

Rendre l'argument Plage dynamique

La plage recherchée via l'argument Plage_critère n'est pas en "dur" (saisie dans la formule) mais calculée dynamiquement dans ce cas.

Excel_Fonctions_NB.SI.ENS valeurs dynamiques

On utilise la fonction INDEX avec l'argument No_lig à 0 permettant de renvoyer la colonne en entier.

Rendre l'argument Critère dynamique

La valeur recherchée via l'argument Critère n'est pas en "dur" (saisie dans la formule) mais calculée dynamiquement dans ce cas.

Excel_Fonctions_NB.SI.ENS valeurs dynamiques

Ajout d'un ET logique

Les autres paires d'arguments Plage_critères et Critères génère forcément des ET logique (un ET diminue le nombre de résultats).

Excel_Fonctions_NB.SI.ENS ET logique

Ajout d'un OU logique

La seule solution est de simplement utiliser plusieurs fonctions en additionnant leurs résultats (un OU augmente le nombre de résultats).

Excel_Fonctions_NB.SI.ENS OU logique
Utilisation d'une matrice en tant que critère et récupération d'une table dynamique

Une autre solution est d'utiliser une constante matricielle renvoyant une table dynamique (voir Formules de tableaux dynamiques, une nouvelle logique de conception et Excel et les matrices (pas celles du cours de mathématiques)) et pourquoi en faire la somme.

Excel_Fonctions_NB.SI.ENS avec une matrice

On en fait la somme (sur les anciennes versions il faudra valider par CTRL + MAJ + ENTRER).

Excel_Fonctions_NB.SI.ENS avec une matrice

SOMME.SI.ENS

Rôle

Faire la somme de valeurs si elles correspondent ou d'autres valeurs associées correspondent à certain critères (caractéristiques).

Syntaxe

= SOMME.SI.ENS( Somme_plage ; Plage_critères1 ; Critères1 [ ; Plage_critères2 ...Plage_critères127 ; Critères127] )
  • Somme_plage : La plage de cellules à additionner. Ne peut être une matrice ou table dynamique !
  • Plage_critères1 à Plage_critères127 : Plage à évoluer. Ne peut être une matrice ou table dynamique !
  • Critères1 à Critères127 : Nombre, expression, référence de cellule, texte ou matrice déterminant les cellules à prendre en compte.

Exemple

Excel_Fonctions_SOMME.SI.ENS

Forme peu usité (plages 2D)

Pour toutes ces fonctions on peut utiliser les plages à 2 dimensions (lignes/colonnes).

Excel_Fonctions_SOMME.SI.ENS

MOYENNE.SI.ENS

Rôle

Faire la moyenne de valeurs si elles correspondent ou d'autres valeurs associées correspondent à certain critères (caractéristiques).

Syntaxe

= MOYENNE.SI.ENS( Plage_moyenne ; Plage_critères1 ; Critères1 [ ; Plage_critères2 ...Plage_critères127 ; Critères127])
  • Plage_moyenne : La plage de cellules dont on doit faire la moyenne. Ne peut être une matrice ou table dynamique !
  • Plage_critères1 à Plage_critères127 : Plage à évoluer. Ne peut être une matrice ou table dynamique !
  • Critères1 à Critères127 : Nombre, expression, référence de cellule, texte ou matrice déterminant les cellules à prendre en compte.

Exemple

Excel_Fonctions_MOYENNE.SI.ENS

MAX.SI.ENS et MIN.SI.ENS

Rôle

Trouver la valeur maximale/minimale d'une plage de cellules si elles correspondent ou d'autres valeurs associées correspondent à certain critères (caractéristiques).

Syntaxe

= MAX.SI.ENS( Plage_max ; Plage_critères1 ; Critères1 [ ; Plage_critères2 ...Plage_critères127 ; Critères127])
= MIN.SI.ENS( Plage_min ; Plage_critères1 ; Critères1 [ ; Plage_critères2 ...Plage_critères127 ; Critères127])
  • Plage_max/min : La plage de cellules dont on doit trouver la valeur maximale/minimale. Ne peut être une matrice ou table dynamique !
  • Plage_critères1 à Plage_critères127 : Plage à évoluer. Ne peut être une matrice ou table dynamique !
  • Critères1 à Critères127 : Nombre, expression, référence de cellule, texte ou matrice déterminant les cellules à prendre en compte.

Exemples

Excel_Fonctions_MAX.SI.ENS et MIN.SI.ENS

Et comment faire d'autres calculs de ce type comme une MEDIANE.SI.ENS qui n'existe pas dans les fonctions ?

Il va falloir utiliser les matrices / tables dynamiques ou la fonction FILTRE.

Excel_Fonctions_MEDIANE.SI.ENS

Quelques explications pour = MEDIANE(SIERREUR(B2:B7*(1/(C2:C7="A"));""))

L'objectif est de remplacer les valeurs ne correspondant pas à A en texte pour qu'elles soient ignorées par la fonction MEDIANE.

  • Le 1/(C2:C7="A") permet de récupérer la matrice { 1 ; 1 ; #DIV/0 ; #DIV/0 ; 1 ; 1 } (FAUX <=> 0 et 1/0 => #DIV/0).
  • Via SIERREUR les #DIV/0 sont remplacés par la chaîne vide "".

Erreur de comparaison des fonctions .SI.ENS

Ces fonctions ont la "mauvaise" (peut-être) habitude de convertir automatiquement les valeurs des plages ce qui peut parfois être gênant.

Exemple : On veut dénombrer les valeurs d'un tableau

Excel_Fonctions_SI.EN : Problème de conversion des données des plages

NB.SI.ENS trouve 4 valeurs identiques (un quadruplon) alors qu'elles sont toutes uniques !

Les cellules B2 (Texte 29-5-1), B3 (Texte 37040), B6 (Date 29/05/2001), B7 (Nombre 37040) sont considérées comme ayant le même contenu.

  • Pour Excel les dates sont des nombres de jours depuis le 0/1/1900 donc 29/05/2001 de B6 et 37040 de B7 sont identiques.
  • NB.SI.ENS convertit le texte de B3 en numérique donc la même chose que B7.
  • NB.SI.ENS convertit le texte de B2 en date donc la même chose que B6 (la saisie des dates avec tiret est une variante de celle avec slash (/).

Contournement :

Revenir au veilles méthodes 😔

=SOMME(($B$2:$B$7=B2)*1)
  • Les cellules B6 et B7 seront toujours considérées comme identiques.

Remarque : Même problème avec l'outil Mise en forme conditionnelle (Valeurs en double) mais pas avec l'outil Supprimer les doublons.

Conclusion

Fonctions très simples à utiliser mais le non support des tableaux dynamiques pour les arguments de type Plage limite leur utilisation dans les formules complexes. On assiste de ce fait à un étonnant retour aux anciennes structures matricielles.

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 *