Trouver la dernière valeur égale dans les lignes précédentes

clab

XLDnaute Nouveau
Bonjour,

Je cherche à trouver la ligne la plus proche au dessus de la cellule active qui correspond à ma condition. Pour être plus clair et plus concret, j'ai la liste des composants d'une structure avec leur niveau dans la structure et je cherche à identifier le père de chaque élément. En pièce un petit exemple plus parlant que des mots.

J'ai essayé d'utiliser la fonction EQUIV (dans la colonne "Ma tentative") mais elle renvoie la première valeur qui correspond à la condition alors que j'ai besoin de la dernière valeur qui correspond à la condition ET qui se trouve avant la ligne où je suis.

Merci d'avance pour vos suggestions.
 

Pièces jointes

  • Exemple.xlsx
    9.4 KB · Affichages: 82
  • Exemple.xlsx
    9.4 KB · Affichages: 96
  • Exemple.xlsx
    9.4 KB · Affichages: 92

Dugenou

XLDnaute Barbatruc
Re : Trouver la dernière valeur égale dans les lignes précédentes

Bonjour,
=MAX(SI($A$2:A2=A3-1;LIGNE($A$2:A2);0))
validé en matriciel c'est à dire avec ctrl+maj+enter
puis recopier vers le bas
et une correction ligne 8 je pense

voir pj
 

Pièces jointes

  • clab Exemple.xlsx
    9.7 KB · Affichages: 73

clab

XLDnaute Nouveau
Re : Trouver la dernière valeur égale dans les lignes précédentes

Merci, c'est parfaitement parfait !

En effet, une petite coquille ligne 8. Il me manque encore quelques connaissances pour comprendre la formule, et le matriciel en général mais en tout cas elle fait ce que je voulais.

Merci encore !
 

job75

XLDnaute Barbatruc
Re : Trouver la dernière valeur égale dans les lignes précédentes

Bonjour clab, hello Dugenou,

Toujours en matriciel mais en évitant la fonction SI (elle pèse lourd en octets) :

Code:
=MAX(($A$2:A2=A3-1)*LIGNE($A$2:A2))
A+
 

Dugenou

XLDnaute Barbatruc
Re : Trouver la dernière valeur égale dans les lignes précédentes

Bonjour Clab, Job75,
Clab : une tentative d'explication de ma formule :

  1. si(condition sur la plage au dessus; N° de ligne;0) : renverra un N° de ligne quand la condition sera à VRAI ou 0 quand elle sera à FAUX. En verrouillant la première ligne et pas la seconde on allongera la zone en recopiant vers le bas.
  2. Max (Si(...)) renverra le plus grand N° de ligne qui rempli la condition
  3. La validation en matriciel permet de faire le SI sur toute la plage => on crée une "table virtuelle" avec toutes les réponses et le max renvoie une seule valeur de cette table
Job, bravo pour la concision : une bonne solution est une solution courte !.
Clab : dans la formule de Job, le si est "implicite" : la condition plage = valeur renvoie Vrai ou Faux, quand on multiplie par le N° de ligne, vrai est considéré comme 1 et faux comme 0 donc on multiplie le N° de ligne qui répond à la condition par 1 et il n'y a plus qu'a "appeler" la plus grande valeur avec le MAX

Cordialement
 

clab

XLDnaute Nouveau
Re : Trouver la dernière valeur égale dans les lignes précédentes

Bonjour Job75 et Dugenou,

Merci encore pour les solutions qui m'ont bien débloquées et également pour les explications. Je me coucherais moins bête ce soir.

Cordialement
 

Discussions similaires

Réponses
5
Affichages
296

Statistiques des forums

Discussions
312 101
Messages
2 085 297
Membres
102 856
dernier inscrit
primavera49