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=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 Grégoire, sur 4:41 PM
Enregistrer un commentaire
<< Accueil