Mark espère trouver la plus petite valeur non nulle dans un ensemble de valeurs.

Par exemple, s’il a les valeurs 0,0,3,0,6,8, il voudra que la valeur 3 (la plus petite valeur différente de zéro) soit renvoyée par une formule. Mark sait qu’il peut utiliser la fonction SMALL avec le deuxième argument calculé en utilisant un COUNTIF pour compter le nombre de zéros dans la plage. Cependant, il souhaite utiliser cela à l’intérieur d’une formule matricielle et Excel ne peut pas gérer les COUNTIFs à l’intérieur des formules matricielles.

Puisque Mark ne s’intéresse qu’aux formules matricielles (saisies en appuyant sur Ctrl + Maj + Entrée), alors il y en a quelques-unes qui pourraient être utilisées. La formule matricielle suivante vaut la peine d’être examinée en premier:

=MIN(IF(A1:A5=0,MAX(A1:A5),A1:A5))

En supposant que les valeurs à examiner sont en A1: A5, cette formule rassemble un tableau de valeurs non nulles de cette plage. Si la valeur de l’une des cellules est 0, la fonction MAX démarre, renvoyant la plus grande valeur de la plage. (Cela supprime essentiellement la valeur de cette cellule – à l’origine 0 – comme étant la plus petite valeur.) Si la valeur de l’une des cellules n’est pas 0, la valeur réelle est renvoyée.

La fonction MIN renvoie ensuite la valeur la plus basse du tableau.

Vous pouvez rendre la formule encore plus courte en la retournant de cette manière:

=MIN(IF(A1:A5<>0,A1:A5))

Notez que dans cette version, la valeur de chaque cellule de la plage est vérifiée pour voir si elle n’est pas égale à 0. Si ce n’est pas le cas, la valeur est renvoyée.

S’il vaut 0, rien n’est renvoyé. Là encore, la fonction MIN est utilisée pour renvoyer la valeur la plus basse du tableau.

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (3260) s’applique à Microsoft Excel 97, 2000, 2002 et 2003. Vous pouvez trouver une version de cette astuce pour l’interface ruban d’Excel (Excel 2007 et versions ultérieures) ici:

link: / excelribbon-Returning_the_Smallest_Non-Zero_Value [Renvoie la plus petite valeur non nulle].