Un equiv() sur une matrice (b)
Pour compléter les deux
articles précédents, nous vous proposons dans cet article une solution non
matricielle pour remplacer celle de Roberto, solution qui a été envoyée par Eric van Rooijen.
En outre, nous vous proposons
d’autres solutions pour l’affichage de « Lig 3 – Col 1 ».
Une solution non matricielle
pour l’affichage du « 301 »
Voici la formule de la
cellule D10, qui a été proposée par Eric van Rooijen.
=(max(index((B2:D4=B6)*ligne(B2:B4););1)-1)*100+(max(index((B2:D4=B6)*colonne(B2:D2););1)-1)
Cette formule n’est pas
matricielle et elle est en outre plus compacte encore que celle de Roberto.
Pour l’esthétique, j’ai mis
les cellules D9:E9 et D10:E10 dans le format d’alignement « Centré sur
plusieurs colonnes » qui présente l’avantage d’afficher les résultat comme
des cellules fusionnées, mais en évitant les effets catastrophiques de la
fusion de cellules, la pire fonctionnalité jamais inventée dans Excel.
Une solution non matricielle
pour l’affichage du « Lig 3 – Col 1 »
Dans son commentaire à
l’article du 27 janvier, Philippe nous propose une solution non matricielle pour
l’affichage de « Lig 3 – Col 1 ». C’est la formule en D13 :
="Lig "&sommeprod((B2:D4=B6)*ligne($A$1:$A$3))&"
- Col "&sommeprod((B2:D4=B6)*colonne($A$1:$C$1))
L’avantage est que cette
formule est non matricielle. L’inconvénient tient à ce que $A$1:$A$3 suppose
que la matrice contient trois lignes, et à ce que $A$1:$C$1 suppose que la matrice contient trois colonnes, ce qui la rend moins générique.
C’est pourquoi je vous propose
en D14 une formule reprenant des éléments de la formule de Roberto et ne présentant donc plus cette limitation :
="Lig "&sommeprod((B2:D4=B6)*(ligne(B2:D4)-min(ligne(B2:D4))+1))&"
- Col "&sommeprod((B2:D4=B6)*(colonne(B2:D4)-min(colonne(B2:D4))+1))
Remarque – Cette formule est
plus longue, mais elle reste non matricielle et – surtout ! – elle devient
totalement générique car elle ne fait référence qu’à un bloc matriciel, B2:D4.
0 Commentaire(s):
Enregistrer un commentaire
<< Accueil