Recherche valeur la plus proche (et non pas...)

Le
Tr
Bonjour à tous,

j'ai un tableau avec par exemple ceci:
A
0.01
0.02
0.03
0.09
0.16
0.23

et j'ai quelque part une valeur de référence, dans cet exemple 0.15
je fais des recherches avec les fonctions qui vont bien (equiv, index),
mais quelque soit la fonction, si la valeur exacte n'est pas renvoyée,
excel me renvoi soit la valeur juste en dessous, suivant le tri que
j'ai choisi, et non pas la valeur vraiment la plus proche, ici 0.16.
bon, vous me direz d'inverser le sens du tri et le critère de
recherche, mais le problème se posera alors dans l'autre sens, me
donnant une valeur trop élevée.

existe-t-il une solution à mon problème?

merci d'avance.

--
Va au bout. (Etat d'esprit)
tranquille.xav@free.fr
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Filochard
Le #5003801
existe-t-il une solution à mon problème?



Vous devez utiliser une matricielle [valider par ctrl+maj+enter] :

=INDEX(TabloRecherche;EQUIV(MIN(ABS(ValeurCherchée-TabloRecherche));ABS(ValeurCherchée-TabloRecherche);0))

Tr
Le #5003791
*Ecrit* *par* *Filochard*:
existe-t-il une solution à mon problème?




Vous devez utiliser une matricielle [valider par ctrl+maj+enter] :



=INDEX(TabloRecherche;EQUIV(MIN(ABS(ValeurCherchée-TabloRecherche));ABS(ValeurCherchée-TabloRecherche);0))


ok, je vais essayer...
merci beaucoup.

--
C'est tellement facile de détruire! Et c'est si difficile de
contruire... (Réflexion)



Ellimac
Le #5003751
Bonjour,

Autre solution :
=SI(NB.SI($A$23:$A$28;A18)=0;DECALER(A23;EQUIV(A18;$A$23:$A$28);0;1;1);RECHERCHEV(A18;$A$23:$A$28;1))

Camille


Bonjour à tous,

j'ai un tableau avec par exemple ceci:
A
0.01
0.02
0.03
0.09
0.16
0.23

et j'ai quelque part une valeur de référence, dans cet exemple 0.15
je fais des recherches avec les fonctions qui vont bien (equiv, index),
mais quelque soit la fonction, si la valeur exacte n'est pas renvoyée,
excel me renvoi soit la valeur juste en dessous, suivant le tri que
j'ai choisi, et non pas la valeur vraiment la plus proche, ici 0.16.
bon, vous me direz d'inverser le sens du tri et le critère de
recherche, mais le problème se posera alors dans l'autre sens, me
donnant une valeur trop élevée.

existe-t-il une solution à mon problème?

merci d'avance.

--
Va au bout. (Etat d'esprit)






Ellimac
Le #5003711
Oui oui pas bien lu la demande

Camille


=SI(NB.SI($A$23:$A$28;A18)=0;DECALER(A23;EQUIV(A18;$A$23:$A$28);0;1;1);RECHERCHEV(A18;$A$23:$A$28;1))


Juste pour mémoire ---
Cette solution comporte quelques inconvénients :
@ Elle ne renvoie pas le plus près mais le plus près AU-DESSUS
@ Elle renvoie aussi la valeur au-dessus quand la valeur cherchée existe dans la liste
@ Pose problème dans certains cas avec une liste non triée



Tr
Le #5014151
*Ecrit* *par* *Filochard*:
existe-t-il une solution à mon problème?




Vous devez utiliser une matricielle [valider par ctrl+maj+enter] :



=INDEX(TabloRecherche;EQUIV(MIN(ABS(ValeurCherchée-TabloRecherche));ABS(ValeurCherchée-TabloRecherche);0))


Désolé d'y revenir:
ma colonne dans laquelle je cherche (TabloRecherche) fait 600 lignes,
et il arrive parfois que toutes les lignes ne soient pas remplies.
du coup, je me retrouve avec le contenu d'une cellule vide renvoyée...
comment faire en sorte que la formule ci-dessus fonctionne en ignorant
les lignes vides?
merci d'avance.

--
L'important n'est pas de convaincre mais de donner à réfléchir.
(Isidore Katzenberg)



Filochard
Le #5014091
=INDEX(TabloRecherche;EQUIV(MIN(ABS(ValeurCherchée-TabloRecherche));ABS(ValeurCherchée-TabloRecherche);0))

et il arrive parfois que toutes les lignes ne soient pas remplies.
du coup, je me retrouve avec le contenu d'une cellule vide renvoyée...
comment faire en sorte que la formule ci-dessus fonctionne en ignorant les
lignes vides?


Dans le 1° argument de la fonction EQUIV vous devez modifier, dans le calcul,
les valeurs de la matrice "TabloRecherche" en excluant les vides et en les
remplaçant, par exemple, par des grands nombres
Formule toujours matricielle :
=INDEX(TabloRecherche;EQUIV(MIN(ABS(ValeurCherchée-SI(TabloRecherche<>"";TabloRecherche;10^10)));ABS(ValeurCherchée-TabloRecherche);0))

Tr
Le #5014061
*Ecrit* *par* *Filochard*:
=INDEX(TabloRecherche;EQUIV(MIN(ABS(ValeurCherchée-TabloRecherche));ABS(ValeurCherchée-TabloRecherche);0))

et il arrive parfois que toutes les lignes ne soient pas remplies.
du coup, je me retrouve avec le contenu d'une cellule vide renvoyée...
comment faire en sorte que la formule ci-dessus fonctionne en ignorant les
lignes vides?


Dans le 1° argument de la fonction EQUIV vous devez modifier, dans le calcul,
les valeurs de la matrice "TabloRecherche" en excluant les vides et en les
remplaçant, par exemple, par des grands nombres
Formule toujours matricielle :
=INDEX(TabloRecherche;EQUIV(MIN(ABS(ValeurCherchée-SI(TabloRecherche<>"";TabloRecherche;10^10)));ABS(ValeurCherchée-TabloRecherche);0))


impressionant :-)
merci!

--
Croyez en la force de l'exemple. (Vécu)



Publicité
Poster une réponse
Anonyme