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.
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)))))))