Index + equiv avec arrayformula/ map ?

Bonjour,

J'ai une forume qui fonctionne bien :

=SI(B2<>"";B2;INDEX(B2$:B2;EQUIV("zzz";B2$:B2)))

sauf que je n'arrive pas a l'appliquer sur une colonne, jai essayé avec arrayformula, map + lambda rien ne semble fonctionner, quelqu'un a une idee ?

1000032872

Bonjour Pierre,

Tu peux partager un lien pour tester des formules stp? Merci.

Ci-joint un petit fichier créé sur Excel pour expliquer une manière de procéder. J'ai essayé de faire une proposition GoogleSheets mais sur ce genre de formules dynamiques il y a parfois des petites corrections à effectuer.

=LET(lProduits;A2:A9;
MAP(lProduits;LAMBDA(x;
LET(
smallList;CHOOSEROWS(OFFSET(lProduits;0;1);SEQUENCE(ROW(x)+1-ROW(INDEX(lProduits;1))));
noBlanks;FILTER(smallList;NOT(ISBLANK(smallList)));
INDEX(noBlanks;COUNTA(noBlanks))))))

L'idée de la formule c'est de récupérer dans la liste des conditionnements, seulement ceux qui se situe "au-dessus" de la ligne courante (chooserows+sequence). Ensuite on filtre cette liste pour ne prendre que les éléments non vides. Puis, dans cette liste filtrée, on vient chercher le dernier élément.

Comme on ne regarde que les lignes au-dessus de la ligne courante, on retrouve bien le dernier conditionnement.

Il y a certainement d'autres manières de procéder, mais je trouve celle-là assez logique.

15book3.xlsx (10.76 Ko)

Une autre formulation peut etre d'utiliser REDUCE pour récupérer le dernier élément de la liste évoquée précédemment.

Ci-après l'adaptation de la formule.

=LET(lProduits;A2:A9;
MAP(lProduits;LAMBDA(x;
LET(
smallList;CHOOSEROWS(OFFSET(lProduits;0;1);SEQUENCE(ROW(x)+1-ROW(INDEX(lProduits;1))));
REDUCE("";smallList;LAMBDA(acc;v;IF(ISBLANK(v);acc;v)))))))

Salut ! Avec la première proposition ça fonctionne, je ne pensais pas m'éloigner autant de ma formule initiale, habituellement je fais une formule, puis, je l'adapte pour qu'elle puisse être affectée automatiquement par un arrayformula, map, byrow, etc...

Là il faut complètement repenser la formule, mais bon, l'essentiel c'est que ça fonctionne, merci

capture d ecran 2025 03 12 210431

Salut, merci pour ton retour.

Avec la première proposition ça fonctionne, je ne pensais pas m'éloigner autant de ma formule initiale,

Oui le soucis avec ta formulation initiale c'est qu'on utilise une plage qui varie pour chaque ligne (le B$2:B2) or quand on utilise MAP ou BYROW cette plage n'est pas réévaluée pour chaque argument. Il faut donc trouver un moyen de la reconstruire. On peut utiliser OFFSET, mais c'est volatile (sur Excel en tout cas) ou bien revoir un peu le procédé, comme je t'ai proposé.

Bonne journée.

Rechercher des sujets similaires à "index equiv arrayformula map"