Monsieur Excel
Pour tout savoir faire sur Excel !

24 mars 2011

Les autres arguments d’equiv()

Nous avons vu il y a quatre jours comment utiliser equiv() avec « 0 » en troisième argument, pour trouver la position, dans le vecteur, de la première valeur identique à la valeur cherchée.

L’argument « +1 »

Quand on utilise comme troisième argument la valeur « +1 », ou quand il n’y a pas de troisième argument, equiv() renvoie la position de la dernière valeur inférieure ou égale à la valeur cherchée.

Cela suppose en général que le vecteur contienne des valeurs croissantes, mais il n’y a en fait aucune obligation en ce sens. Et il y a des applications concrètes où je l’utilise sur un vecteur non trié…

L’algorithme est alors le même que celui utilisé par recherche() ou par recherchev() sans quatrième argument, ou avec VRAI. On descend jusqu’à trouver la première valeur supérieure à la valeur cherchée, on remonte d’un cran…

L’argument « -1 »

Quand on utilise comme troisième argument la valeur « -1 », equiv() renvoie la position de la dernière valeur supérieure ou égale à la valeur cherchée.

Cela suppose en général que le vecteur contienne des valeurs décroissantes, mais il n’y a en fait aucune obligation en ce sens. Et il y a des applications concrètes où je l’utilise sur un vecteur non trié…

Correspondances avec recherche()

En fait, les fonction recherche() et recherchev() ou …h() sont équivalentes à un index d’equiv.

Si l’on appelle vect_1 le premier vecteur vertical et vect_2 le dernier vecteur vertical d’une matrice verticale ou carrée, les formules suivantes sont équivalentes :

D’une part :
=recherche(valeur;matrice)
=recherche(valeur;vect_1;vect_2)
=index(vect_2;equiv(valeur;vect_1))

D’autre part :
=recherchev(valeur;matrice;n;faux)
=index(vect_2;equiv(valeur;vect_1;faux))

… où n est égal à colonne(vect_2)-colonne(vect_1)+1