Monsieur Excel
Pour tout savoir faire sur Excel !

01 février 2014

Un equiv() sur une matrice (a)

L’article précédent nous a servi à combler une immense lacune de la fonction equiv() :  elle permet en effet de localiser un texte ou une valeur dans un vecteur, mais pas dans une matrice.

Comme l’a remarqué avec justesse Benji dans le premier commentaire de l'article précédent, je comptais bien entendu vous apporter l’équivalent d’un equiv() pour la localisation d’un élément dans une matrice.

La première solution que je vous propose est – ce n’est pas un miracle pour les habitués de ce blog ! – encore due à Roberto Mensa. Voici sa formule – matricielle, donc validée avec [Ctrl]-[Maj]-[Entrée] – en D8 :
=petite.valeur(si(B2:D4=B6;(ligne(B2:D4)-min(ligne(B2:D4))+1)*100+(colonne(B2:D4)-min(colonne(B2:D4))+1);"");1)

B2:D4 est notre matrice complète, qui pourrait avoir une taille quelconque…


B2:D4=B6 s’évalue en {FAUX.FAUX.FAUX;FAUX.FAUX.FAUX;VRAI.FAUX.FAUX}. C’est donc la matrice des résultats.

Le si() sert à mettre un espace chaque fois que l’on obtient « FAUX».

On peut alléger encore un peu la formule de Roberto en remplaçant petite.valeur(… ;1) par somme(…). C'est ce que j'ai fait en E8.

Vous avez donc à présent l’équivalent d’un equiv() qui trouve la localisation d’un texte ou d’une valeur dans une matrice !

Nous verrons dans le prochain article une autre solution à ce problème.


1 Commentaire(s):

  • Bonjour,

    Tout d'abord, merci pour cette nouvelle solution à une problématique relativement récurrente!

    Juste une petite remarque: l'avantage de la solution "petite.valeur" sur la solution "somme" est que, dans le cas où la valeur cherchée apparaîtrait plusieurs fois, elle amènera la position de la première valeur trouvée, et non une somme de toutes les positions.

    Bonne journée.

    Grégoire

    By Anonymous Grégoire, sur 4:41 PM  

Enregistrer un commentaire

<< Accueil