XL 2010 Explications sur une formule - Rechercher dernière valeur correspondante dans Excel avec des formules

Mateusz54

XLDnaute Nouveau
Hello,

Je cherchais une formule qui me permettrait de renvoyer la dernière valeur correspondante dans une liste d'éléments qui sont répétés plusieurs fois. Autrement dit je voulais une sorte de Recherchev mais qui ramène le résultat correspondant à la dernière occurrence de la valeur cherchée.
J'ai trouvé sur le web une formule qui fonctionne et qui fait exactement ce qu'il me faut.

Par contre l'auteur n'a donnée aucune explication et je ne comprends pas ce qu'elle fait.... Et je voudrais comprendre :D
Si quelqu'un peut me donner une explication ça serait super!

Voici la formule :
=RECHERCHE(3;(1/('Maquete exp'!$A$1:$A$2500=E2168))+(1/('Maquete exp'!$Q$1:$Q$2500<>""));'Maquete exp'!$Q$1:$Q$2500)

Dans cette formule , $A$1: $A$2500 indique la colonne dans laquelle je recherche ma valeur E2168 , pour laquelle je souhaite renvoyer les informations relatives et $Q$1: Q2500 est la liste qui contient la valeur que je souhaite renvoyer.
Exemple :
Colonne A​
….​
Colonne Q​
201592​
AA​
112126​
FF​
003836
GF​
545435​
ZZZZ​
6605518​
AAAR​
112126​
RTRT​
112126​
BINGO​

Pour mon client '112126' (E2168) la formule me renvoie la dernière valeur, donc le BINGO.

Je sais pas si c'est claire ;) Mais je voudrais savoir pourquoi 3? et pourquoi (1/('Maquete exp'!$A$1:$A$2500=E2168))+(1/('Maquete exp'!$Q$1:$Q$2500<>"") ??

Merci d'avance

Mat,
 

Etoto

XLDnaute Barbatruc
Hello,

Je cherchais une formule qui me permettrait de renvoyer la dernière valeur correspondante dans une liste d'éléments qui sont répétés plusieurs fois. Autrement dit je voulais une sorte de Recherchev mais qui ramène le résultat correspondant à la dernière occurrence de la valeur cherchée.
J'ai trouvé sur le web une formule qui fonctionne et qui fait exactement ce qu'il me faut.

Par contre l'auteur n'a donnée aucune explication et je ne comprends pas ce qu'elle fait.... Et je voudrais comprendre :D
Si quelqu'un peut me donner une explication ça serait super!

Voici la formule :
=RECHERCHE(3;(1/('Maquete exp'!$A$1:$A$2500=E2168))+(1/('Maquete exp'!$Q$1:$Q$2500<>""));'Maquete exp'!$Q$1:$Q$2500)

Dans cette formule , $A$1: $A$2500 indique la colonne dans laquelle je recherche ma valeur E2168 , pour laquelle je souhaite renvoyer les informations relatives et $Q$1: Q2500 est la liste qui contient la valeur que je souhaite renvoyer.
Exemple :
Colonne A​
….​
Colonne Q​
201592​
AA​
112126​
FF​
003836
GF​
545435​
ZZZZ​
6605518​
AAAR​
112126​
RTRT​
112126​
BINGO​

Pour mon client '112126' (E2168) la formule me renvoie la dernière valeur, donc le BINGO.

Je sais pas si c'est claire ;) Mais je voudrais savoir pourquoi 3? et pourquoi (1/('Maquete exp'!$A$1:$A$2500=E2168))+(1/('Maquete exp'!$Q$1:$Q$2500<>"") ??

Merci d'avance

Mat,
Hello, intéressant cette formule, j'aurais joué avec une matricielle perso mais bon, écoute, si tu veux une explication, pas de problème mais transmet-nous ton fichier, je pourrais ainsi utiliser "l'évaluateur de formule" et ainsi t'expliquer la démarche, données anonymisées bien sûr.

EDIT : Si tu as trouvé la formule sur un autre site, tu es un traitre ! 🤣 🤣

EDIT 2: Non, c'est bon je te redit.
 

Etoto

XLDnaute Barbatruc
Ok, je crois avoir compris. (référence modifiée par moi pour mon fichier n'y prête pas attention).

En fait le
VB:
(1/($A$1:$A$14=D8))
Vérifie si les nombres de la colonne A sont égal à ton critère de recherche.
Le
VB:
(1/($C$1:$C$14<>""))
Vérifie si les cellules de la colonne Q sont vides.

Après, il rassemble les deux conditions avec le "+".

Après avec cela le
VB:
RECHERCHE(3;...;$C$1:$C$14)
Va voir la premier arguent qu'il doit prendre, le troisième résultat, deuxième argument, les conditions si dessus et il va renvoyer l'élément correspondant de la colonne Q avec le dernier argument.

Ai-je été assez précis ou trop vague ? Si tu as des autres questions, n'hésite pas.
 

Mateusz54

XLDnaute Nouveau
Ok, je crois avoir compris. (référence modifiée par moi pour mon fichier n'y prête pas attention).

En fait le
VB:
(1/($A$1:$A$14=D8))
Vérifie si les nombres de la colonne A sont égal à ton critère de recherche.
Le
VB:
(1/($C$1:$C$14<>""))
Vérifie si les cellules de la colonne Q sont vides.

Après, il rassemble les deux conditions avec le "+".

Après avec cela le
VB:
RECHERCHE(3;...;$C$1:$C$14)
Va voir la premier arguent qu'il doit prendre, le troisième résultat, deuxième argument, les conditions si dessus et il va renvoyer l'élément correspondant de la colonne Q avec le dernier argument.

Ai-je été assez précis ou trop vague ? Si tu as des autres questions, n'hésite pas.
Merci pour ta réponse (faite à un traitre en plus 😄 )

Le 3 pour troisième résultat, dans mon exemple c'est le hasard .... il peut y avoir plusieurs occurrences et c'est toujours le '3' comme argument pour avoir le dernier.
J'ai préparé un petit fichier d'exemple, avec des chiffres bidons. La formule se trouve sur l'onglet "Result" - colonne C et elle "tape" dans l'onglet "Maquette exp". (mais du coup les références sont encore différentes, désolé).

J'ai l’impression que "($A$1:$A$14=D8))" envoie une série des VRAI/FAUX mais pourquoi on divise le 1 par ce résultat? 🤔

Après, si tu vois pas c'est pas très grave, l'essentiel c'est que cela fonctionne :)
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Hello, intéressant cette formule, j'aurais joué avec une matricielle perso
Tout comme toi @Etoto, je serais parti sur une formule matricielle avec des conditions, un max et un index :
VB:
=INDEX(Q:Q;MAX((A1:A10=E1)*(Q1:Q10<>"")*LIGNE(Q1:Q10)))

Mais je trouve le principe de la formule RECHERCHE très intéressante. Je n'y aurais pas pensé car je ne savais pas comment cette fonction pouvait se comporter avec des valeurs d'erreurs. Manifestement, elle sait très bien les ignorer.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
314 719
Messages
2 112 181
Membres
111 452
dernier inscrit
christine64