Problème avec LOOKUP dans Excel

4

Je rencontre actuellement un problème avec la fonction LOOKUP dans Excel

parfois, il trouverait les bonnes données et parfois pas.

J'ai fait un exemple d'image ci-dessous, les deux exemples en haut donnent de mauvais résultats tandis que les deux en bas donnent les bons résultats.

Ma syntaxe ou mon utilisation de LOOKUP est-elle incorrecte? Comment dois-je le corriger pour obtenir le résultat attendu?

Je ne peux pas comprendre ce que je fais mal là

voici le tableau csv des données (mon ordinateur allemand utilise ';' les séparateurs également dans la formule, vous devrez peut-être le modifier)

;"LOOKUP(C2;D2:D4;A2:A4)";;;;;
D4;"=LOOKUP(C2;D2:D4;A2:A4)";3400;3400;;;
CI;;;2390;;;
F5;;;900;;;
;"LOOKUP(C6;D6:D11;A6:A11)";;;;;
D4;"=LOOKUP(C6;D6:D11;A6:A11)";3600;900;;;
F4;;;3600;;;
CI;;;2390;;;
D4;;;900;;;
B4;;;2250;;;
D4;;;900;;;
;;;;;;
;;;;;;
;"LOOKUP(C15;D15:D17;A15:A17)";;;;;
D4;"=LOOKUP(C15;D15:D17;A15:A17)";3600;900;;;
F4;;;3600;;;
CI;;;2390;;;
;;;;;;
;"LOOKUP(C20;D20:D27;A20:A27)";;;;;
D4;"=LOOKUP(C20;D20:D27;A20:A27)";3600;900;;;
F4;;;3600;;;
F6;;;3650;;;
F5;;;3700;;;
CI;;;2390;;;
D4;;;900;;;
B4;;;2250;;;
D4;;;900;;;
Jonathan
la source

Réponses:

8

Si j'ai compris ce que vous essayez de faire, je vous suggérerais d'utiliser INDEXet MATCH:

Voir mon exemple que vous pourriez utiliser dans votre premier exemple:

=INDEX(A2:A4,MATCH(C2,D2:D4,0),1)

entrez la description de l'image ici

Vous pouvez également utiliser OFFSETce qui est souvent négligé:

=OFFSET(A2,MATCH(C2,D2:D4,0)-1,0)
PeterH
la source
Merci, je suis également intéressé de savoir pourquoi LOOKUPne renvoie pas la valeur correcte. une idée?
Jonathan
1
Je suis intéressé de voir comment LOOKUP fonctionne moi-même maintenant, j'ai eu les mêmes résultats que vous quand je l'ai essayé, bizarre
PeterH
1
Apparemment, LOOKUP fait une recherche binaire avec le seul document expliquant qu'une petite note dans la section syntaxe ...
Ratchet Freak
1
@BruceWayne ce sont juste des macros que j'ai enregistrées dans mon cahier de travail personnel, puis ajoutées au ruban afin que je puisse les utiliser dans n'importe quel classeur
PeterH
1
@BruceWayne Je ne me souviens plus exactement de l'endroit où je l'ai appris, mais il existe quelques étapes simples dans ce lien dummies.com/software/microsoft-office/excel/…
PeterH
2

@ Jonathan, je voudrais suggérer DEUX Formule.

La formule 1 est ,, = RECHERCHE (5,1 / (D317: D319 = C317), A317: A319)

La formule 2 est ,, = RECHERCHE (317 $ C, D317: 339 $ D, A317: 339 $)

NB: La plage de données est A317 à D317 pour la formule 1.

NB: La plage de données est A317 à D339 pour la formule 2.

Pour la première formule.

Valeur de recherche dans C317

La plage de référence va de D317 à D319.

La plage de vecteur de résultat est A317 à A319.

NB: Vous devez écrire une formule pour chaque plage de données.

Notez également pour la formule 1, au lieu de 5, vous devez utiliser une valeur supérieure à 1. Utilisez 5/1 pour trouver True & False.

Une autre précaution est que la plage de données doit être triée par ordre croissant.

En outre, pour la formule 2, j'ai utilisé toute la plage de données en raison des lignes vides uniquement.

J'espère que cela vous aidera, j'ai posté la solution après avoir été testée par moi. Je peux télécharger la capture d'écran si et quand vous en avez besoin.

Rajesh S
la source
J'ai testé et Formule 1 semble fonctionner en ignorant le tri, c'est donc un retournement intéressant. Pensez-vous que vous pouvez aussi expliquer comment avez-vous découvert que 1/(D317:D319 = C317)c'était aussi un «vecteur»?
Jonathan
1
Je pense que cela fonctionne en créant un vecteur de {# DIV / 0, # DIV / 0, 1} avec seulement la valeur 1 utilisée pour rechercher le vecteur de recherche. car peu importe ce que vous changez le 5 en cette partie = LOOKUP (5. formule globale très intelligente
PeterH
1
Je comprends maintenant, LOOKUP cherche ensuite la valeur maximale la plus proche de 5 et vaut 1. C’est vraiment chouette, @ User91504 merci.
Jonathan
En fin de compte, Computer recherche les données au format binaire et justifie en termes de Vrai ou de Faux. Le format vectoriel est, recherchez dans 1 ligne ou la colonne qui trouve le plus grand, si la plage de vecteur n’a pas été triée, elle peut trouver le plus petit, Lookup renverra l’erreur # N / A. C'est la raison pour laquelle Lookup a encore un modèle appelé Array, qui peut rechercher plus d'une colonne ou d'une ligne.
Rajesh S
Puisque votre exigence était de réparer la formule existante, sinon je préfère toujours les combinaisons Index et Match. Quoi qu'il en soit, nous avons tous résolu le problème, enfin une fin heureuse.
Rajesh S
2

À partir du site Web du support Office :

Important : Les valeurs de lookup_vector doivent être placées dans l'ordre croissant: ..., -2, -1, 0, 1, 2, ..., AZ, FALSE, TRUE; sinon, LOOKUP pourrait ne pas renvoyer la valeur correcte. Le texte en majuscule et en minuscule est équivalent.

Ceci est clairement indiqué dans la fonction VLOOKUP , qui remplace officiellement LOOKUP, où un dernier paramètre permet de choisir entre imiter le comportement de LOOKUP (données triées requises) ou effectuer une recherche dans des données non triées.

Martin Argerami
la source
1

J'ai constaté que si je refais le tableau, même si tout semble en ordre, LOOKUP renverra alors la réponse correcte.

Deagan
la source
Pourriez-vous clarifier ceci: qu'est-ce que le re-triage d'une table et avez-vous un exemple?
Jonathan