Rechercher valeur proche dans tableau
redrum
-
eriiic Messages postés 25847 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 25847 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai un tableau de référence à 5 lignes et 5 colonnes :
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
L'utilisateur spécifie une valeur. Par exemple : 10,2
Je cherche la formule qui va m'indiquer la valeur inférieure la plus proche de la valeur introduite par l'utilisateur, soit ici : 10
Merci pour votre aide.
J'ai un tableau de référence à 5 lignes et 5 colonnes :
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
L'utilisateur spécifie une valeur. Par exemple : 10,2
Je cherche la formule qui va m'indiquer la valeur inférieure la plus proche de la valeur introduite par l'utilisateur, soit ici : 10
Merci pour votre aide.
A voir également:
- Rechercher valeur proche dans tableau
- Tableau word - Guide
- Tableau ascii - Guide
- Trier un tableau excel - Guide
- Les données fournies dans le fichier à télécharger peuvent être synthétisées par le tableau récapitulatif ci-dessous. dans le fichier, générez ce tableau automatiquement (tableau croisé dynamique ou table de pilote) à partir des quatre premières colonnes. il manque 5 valeurs dans le tableau ci-dessous. retrouvez-les dans votre tableau, puis reportez-les arrondies à l’entier le plus proche. - Guide
- Rechercher ou entrer l'adresse - Guide
9 réponses
Bonjour
en principe à la lecrture de vos données et puisque toutes les valeurs du tableau se suivent, il n'y a pas besoin de faire référence au tableau
Essayez cet exemple dans une feuille vierge:
En A1, la valeur rentrée
En B1 la formule:
=ARRONDI(A1;0)
Nota: cette formule vous renvoie l'entier inférieur jusqu'à 0,5 inclus et l'entier supèrieur au dessus de 0,5.
Si vous voulez sortir la valeur supèrieure dans la cas de 0,5, vous pouvez utiliser la formule:
=SI(A1-ENT(A1)<0,5;ENT(A1);ENT(A1)+1)
Et, après vérification de votre demande, (je suis parti un peu vite) encore plus simplement:
Soit:
=ARRONDI.INF(A1)
Soit:
=ENT(A1)
Crdlmnt
en principe à la lecrture de vos données et puisque toutes les valeurs du tableau se suivent, il n'y a pas besoin de faire référence au tableau
Essayez cet exemple dans une feuille vierge:
En A1, la valeur rentrée
En B1 la formule:
=ARRONDI(A1;0)
Nota: cette formule vous renvoie l'entier inférieur jusqu'à 0,5 inclus et l'entier supèrieur au dessus de 0,5.
Si vous voulez sortir la valeur supèrieure dans la cas de 0,5, vous pouvez utiliser la formule:
=SI(A1-ENT(A1)<0,5;ENT(A1);ENT(A1)+1)
Et, après vérification de votre demande, (je suis parti un peu vite) encore plus simplement:
Soit:
=ARRONDI.INF(A1)
Soit:
=ENT(A1)
Crdlmnt
Salut
ton tableau étant en C15:G19 et ta valeur de tes en C9
=SOMMEPROD((C15:G19=ARRONDI.INF(C9;0))*1;C15:G19)
Mais ne fonctionne que si l'entier de ta valeur de référence se trouve dans ton tableau
Je creuse pour la suite...
ton tableau étant en C15:G19 et ta valeur de tes en C9
=SOMMEPROD((C15:G19=ARRONDI.INF(C9;0))*1;C15:G19)
Mais ne fonctionne que si l'entier de ta valeur de référence se trouve dans ton tableau
Je creuse pour la suite...
Salut Mabelle
Explique moi :
pourquoi aller chercher dans un tableau une valeur égale à celle recherchée puisque tu l'as dans la formule (ARRONDI.INF(C9;0)
Qu'y gagne t'on?
Crdlmnt
Explique moi :
pourquoi aller chercher dans un tableau une valeur égale à celle recherchée puisque tu l'as dans la formule (ARRONDI.INF(C9;0)
Qu'y gagne t'on?
Crdlmnt
Bonsoir tout le monde,
Voici une proposition avec tes 25 nombres en A1:E5 et le nombre à comparer en B9 :
Comme la formule ne marchait que pour des nombres positifs j'ajoute 2 fois 10000 pour ramener les négatifs dans les positifs (augmente cette valeur si besoin) et il faut donc en soustraire le double à la fin.
Limitation : ça te ramène -10000 si pas de nombre inférieur trouvé. Possibilité d'ajouter un test pour afficher un message.
D'autre part je ne suis pas sûr de moi à 100%, je te laisse tester plus complètement
eric
Voici une proposition avec tes 25 nombres en A1:E5 et le nombre à comparer en B9 :
=MAX(((A1:E5<=B9)*(A1:E5+10000)-B9+10000))+B9-20000formule matricielle à valider par shift+ctrl+entrée. Si bien validée elle doit se retrouvée encadrée par des { }
Comme la formule ne marchait que pour des nombres positifs j'ajoute 2 fois 10000 pour ramener les négatifs dans les positifs (augmente cette valeur si besoin) et il faut donc en soustraire le double à la fin.
Limitation : ça te ramène -10000 si pas de nombre inférieur trouvé. Possibilité d'ajouter un test pour afficher un message.
D'autre part je ne suis pas sûr de moi à 100%, je te laisse tester plus complètement
eric
Merci pour la réponse.
Ca fonctionne, merci beaucoup.
Je ne suis pas trop à l'aise avec les formules matricielles. J'aimerais comprendre ce que fait la formule et j'ai un peu de mal. Peux-tu m'aider ?
J'ai une variante : je recherche la valeur la plus proche, qu'elle soit supérieure ou inférieure importe peu. D'autre part, si l'utilisateur entre un numéro de ligne, je voudrais que la recherche ne se fasse que sur le numéro de ligne spécifié. Peux-tu m'aider ?
Ca fonctionne, merci beaucoup.
Je ne suis pas trop à l'aise avec les formules matricielles. J'aimerais comprendre ce que fait la formule et j'ai un peu de mal. Peux-tu m'aider ?
J'ai une variante : je recherche la valeur la plus proche, qu'elle soit supérieure ou inférieure importe peu. D'autre part, si l'utilisateur entre un numéro de ligne, je voudrais que la recherche ne se fasse que sur le numéro de ligne spécifié. Peux-tu m'aider ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour
Pour mon info
Avez vous essayé le message 1 et s'il ne correspond pas à ce que vous cherchez, pouvez vous me dire ce qui m'a échappé dans votre demande?
Crdlmnt
Pour mon info
Avez vous essayé le message 1 et s'il ne correspond pas à ce que vous cherchez, pouvez vous me dire ce qui m'a échappé dans votre demande?
Crdlmnt
Bonsoir tout le monde,
Vaucluse, relis les posts 4 et 5. Ce n'est pas la partie entière qu'il veut mais la valeur inférieure la plus proche (dans une liste) d'une donnée.
Par exemple :
liste : -2.3 5.8 13.2
donnée : 4.7 il faut retourner -2.3
redrum : une formule matricielle travaille sur une liste de valeurs (une matrice). Ce n'est pas forcément facile à appréhender ni à expliquer.
A la reflexion la formule peut être simplifiée en : =MAX((A1:E5<=B9)*(A1:E5+10000))-10000
Les négatifs m'avaient posé problème et il reste des traces d'une partie qui n'est pas nécessaire..
-avec (A1:E5<=B9) je recupère les valeurs <= à la donnée sous la forme d'une matrice {VRAI\FAUX\FAUX\VRAI\...} (la réponse est obligatoirement dans cette liste)
-avec (A1:E5<=B9)*(A1:E5+10000) mes negatifs deviennent positifs (+10000), et je multiplie les vrai\faux par les valeurs, si vrai je récupère la valeur+10000, si faux je récupère 0 et j'obtiens qcq chose comme {10001\10002\10003\10004\10005;10008\10009\...\10026;0\0\0\0\0}
Et la réponse est la maxi de cette liste auquel il faut soustraire 10000 pour retrouver le nombre original de la liste d'où :
=MAX((A1:E5<=B9)*(A1:E5+10000))-10000
Pour la variante, qui n'a plus rien à voir et qui n'est pas forcément plus simple (toujours ces nombres négatifs qui mettent le brin...tu es sûr d'en avoir oui ?) on verra un peu plus tard car ça réclame du temps.
Peut-être que tu auras eu des réponses d'ici là et réfléchi bien à tes besoin réels car ils ont l'air d'évoluer un peu trop vite à mon goût...
Peut-être as-tu mal analysé ton pb et que la solution (le chemin pour l'atteindre) pourrait être tout autre que ce que tu demandes. N'hésite pas à décrire ton besoin réel
eric
Vaucluse, relis les posts 4 et 5. Ce n'est pas la partie entière qu'il veut mais la valeur inférieure la plus proche (dans une liste) d'une donnée.
Par exemple :
liste : -2.3 5.8 13.2
donnée : 4.7 il faut retourner -2.3
redrum : une formule matricielle travaille sur une liste de valeurs (une matrice). Ce n'est pas forcément facile à appréhender ni à expliquer.
A la reflexion la formule peut être simplifiée en : =MAX((A1:E5<=B9)*(A1:E5+10000))-10000
Les négatifs m'avaient posé problème et il reste des traces d'une partie qui n'est pas nécessaire..
-avec (A1:E5<=B9) je recupère les valeurs <= à la donnée sous la forme d'une matrice {VRAI\FAUX\FAUX\VRAI\...} (la réponse est obligatoirement dans cette liste)
-avec (A1:E5<=B9)*(A1:E5+10000) mes negatifs deviennent positifs (+10000), et je multiplie les vrai\faux par les valeurs, si vrai je récupère la valeur+10000, si faux je récupère 0 et j'obtiens qcq chose comme {10001\10002\10003\10004\10005;10008\10009\...\10026;0\0\0\0\0}
Et la réponse est la maxi de cette liste auquel il faut soustraire 10000 pour retrouver le nombre original de la liste d'où :
=MAX((A1:E5<=B9)*(A1:E5+10000))-10000
Pour la variante, qui n'a plus rien à voir et qui n'est pas forcément plus simple (toujours ces nombres négatifs qui mettent le brin...tu es sûr d'en avoir oui ?) on verra un peu plus tard car ça réclame du temps.
Peut-être que tu auras eu des réponses d'ici là et réfléchi bien à tes besoin réels car ils ont l'air d'évoluer un peu trop vite à mon goût...
Peut-être as-tu mal analysé ton pb et que la solution (le chemin pour l'atteindre) pourrait être tout autre que ce que tu demandes. N'hésite pas à décrire ton besoin réel
eric
Merci Eric pour ta patience.
Je vais réitérer exactement mon besoin :
Le tableau comporte X ligne et Y colonnes de valeurs toutes positives. Chaque ligne et chaque colonne possède un titre.
Imagine que le contenu du tableau soit des surfaces (m²), que le titre des lignes soit des mètres (m) et le titre des colonnes soient également des mètres (m)
L'utilisateur entre deux paramètres :
1- une surface S
2- une longueur L.
Première Etape :
Je cherche cette longueur L qui, dans mon application, existe forcément dans un titre de ligne. Avec la fonction EQUIV réalisée sur la colonne qui comporte les titres de ligne, je récupère le numéro de la ligne qui comporte cette longueur.
Deuxième étape :
Sur le numéro de ligne que je viens de trouver, je cherche une surface Sp qui est la valeur la plus proche de S (oublie la notion de supérieur ou inférieur, on s'en moque maintenant)
Troisième étape :
A ce stade, on a identifié une cellule dont j'aimerais récupérer les coordonnées pour remonter vers le titre de la colonne qui l'accueille et qui est la valeur que je recherche.
Bien sur, on peut réaliser cela en multipliant les tableaux intermédiaires mais ce n'est pas très propre.
Voilà, j'espère que c'est plus clair, sinon fais moi signe.
Je vais réitérer exactement mon besoin :
Le tableau comporte X ligne et Y colonnes de valeurs toutes positives. Chaque ligne et chaque colonne possède un titre.
Imagine que le contenu du tableau soit des surfaces (m²), que le titre des lignes soit des mètres (m) et le titre des colonnes soient également des mètres (m)
L'utilisateur entre deux paramètres :
1- une surface S
2- une longueur L.
Première Etape :
Je cherche cette longueur L qui, dans mon application, existe forcément dans un titre de ligne. Avec la fonction EQUIV réalisée sur la colonne qui comporte les titres de ligne, je récupère le numéro de la ligne qui comporte cette longueur.
Deuxième étape :
Sur le numéro de ligne que je viens de trouver, je cherche une surface Sp qui est la valeur la plus proche de S (oublie la notion de supérieur ou inférieur, on s'en moque maintenant)
Troisième étape :
A ce stade, on a identifié une cellule dont j'aimerais récupérer les coordonnées pour remonter vers le titre de la colonne qui l'accueille et qui est la valeur que je recherche.
Bien sur, on peut réaliser cela en multipliant les tableaux intermédiaires mais ce n'est pas très propre.
Voilà, j'espère que c'est plus clair, sinon fais moi signe.
Effectivement, pas vu 4 & 5, pouvait pas savoir...surtout que mes messages, à part le dernier, sont passés avant les rectifications de Redrum!.... ou les complèments d'info, comme on veut.
Salut Eric
crdlmnt à tous
Salut Eric
crdlmnt à tous
re,
je pense que c'est ça que tu veux :
=INDEX(B1:F1;1;EQUIV(MIN(ABS(DECALER(B1;EQUIV(B11;A2:A7;0);0;1;5)-C11));ABS(DECALER(B1;EQUIV(B11;A2:A7;0);0;1;5)-C11);0))
toujours en matricielle...
Ex:
http://www.cijoint.fr/cjlink.php?file=cj200902/cijXwbTFkw.xls
eric
je pense que c'est ça que tu veux :
=INDEX(B1:F1;1;EQUIV(MIN(ABS(DECALER(B1;EQUIV(B11;A2:A7;0);0;1;5)-C11));ABS(DECALER(B1;EQUIV(B11;A2:A7;0);0;1;5)-C11);0))
toujours en matricielle...
Ex:
http://www.cijoint.fr/cjlink.php?file=cj200902/cijXwbTFkw.xls
eric
Je m'autoréponds :
=INDEX(B1:F1;1;EQUIV(MIN(SI(DECALER(B1;EQUIV(B11;A2:A7;0);0;1;5)-C11>=0;DECALER(B1;EQUIV(B11;A2:A7;0);0;1;5)-C11));DECALER(B1;EQUIV(B11;A2:A7;0);0;1;5)-C11;0))
=INDEX(B1:F1;1;EQUIV(MIN(SI(DECALER(B1;EQUIV(B11;A2:A7;0);0;1;5)-C11>=0;DECALER(B1;EQUIV(B11;A2:A7;0);0;1;5)-C11));DECALER(B1;EQUIV(B11;A2:A7;0);0;1;5)-C11;0))
bonjour
je suis débutant et j'ai un problème similaire, seulement j'ai
une suite de nombre entier dans la colonne B et un nombre dans la cellule D2
je voudrais une formule ki trouve dans la colonne B le nombre proche de celui dans D2 (par valeur supérieur)
EX:
B C D résultat= 3
15
1 2
19
3
4
7
ce serait meilleur si c'est en vba
merci
je suis débutant et j'ai un problème similaire, seulement j'ai
une suite de nombre entier dans la colonne B et un nombre dans la cellule D2
je voudrais une formule ki trouve dans la colonne B le nombre proche de celui dans D2 (par valeur supérieur)
EX:
B C D résultat= 3
15
1 2
19
3
4
7
ce serait meilleur si c'est en vba
merci
Vous n'avez pas compris ma demande.
En fait les valeurs ne se suivent pas, cela peut être n'importe quoi : des nombres positifs, négatifs, à virgule et sans aucune logique d'ordre.