Monsieur Excel
Pour tout savoir faire sur Excel !

06 février 2014

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.