Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

7 réponses
Avatar
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

7 réponses

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

Avatar
Tr
*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)



Avatar
Ellimac
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)






Avatar
Ellimac
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



Avatar
Tr
*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)



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

Avatar
Tr
*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)