1
votes

Comment obtenir une sortie spécifique si une valeur se trouve dans une plage

J'ai une gamme de "limites" de codes postaux multiples avec un coût spécifique qui y est associé.

 Tableau Excel

J'ai un fichier séparé qui indique un code postal. Je dois utiliser une formule qui vérifie le tableau présenté dans l'image, qui vérifie à quel intervalle de code postal il appartient, puis en tant que sortie donne le prix correspondant.

Dans le cas du code postal 1234, il devrait donner 300 comme sortie.
Dans le cas du code postal 2169, il devrait donner 209 comme sortie.

J'ai eu du mal avec les fonctions if (plus grandes que, plus petites que, mais je n'ai pas pu vérifier l'intégralité du fichier de données).


2 commentaires

1269 ne devrait-il pas être 300?


désolé oui signifiait 2169


3 Réponses :


1
votes

Vous pouvez utiliser la formule = VLOOKUP ou = SUMIFS () :

=SUMIFS($C$2:$C$5,$A$2:$A$5,"<="&E2,$B$2:$B$5,">="&E2)

Vous devez définir range_lookup TRUE (ce qui est fait dans le code ci-dessus).

Notez que lorsque la valeur d'entrée est inférieure au minimum du code postal min, elle renvoie # N / A. Lorsque la valeur d'entrée est supérieure à tous les codes postaux max, elle renvoie la valeur du maximum de codes postaux. Vous pouvez les corriger avec les fonctions = IFNA et = IF .

Utilisation de = SUMIFS () où E2 est le entrée:

=VLOOKUP(1234,$A$2:$C$5,3,TRUE)


6 commentaires

Je crois que vous devriez relire la question - OP demande une formule de recherche qui ne renvoie pas une correspondance exacte (comme le fait vlookup () ), mais une correspondance, basée sur la plage de valeurs dans lesquelles il s'inscrit.


De plus, à mon avis, RECHERCHEV ne doit JAMAIS être utilisé. INDEX / MATCH peut faire tout ce que VLOOKUP peut. De plus, il est plus efficace (plus rapide), plus polyvalent et ne casse pas si des colonnes sont insérées dans la plage.


@VasylZebra lorsque vous définissez range_lookup = FALSE , vous obtenez une correspondance exacte. Lorsque vous définissez range_lookup = TRUE , vous obtenez une correspondance basée sur une plage de valeurs. range_lookup est la dernière entrée de = VLOOKUP () .


Merci Mehmet votre réponse m'a aidé!


@Mehmet Yusuf Cakmak: Je dois admettre que cela fait le travail dans ce cas particulier - je n'ai probablement pas utilisé vlookup () depuis un certain temps, principalement pour les raisons exposées ci-dessus par @Gravitate - il n'est pas flexible, sensible à l'ordre des colonnes, ne parvient pas à faire face aux recherches complexes à plusieurs critères


@Mehmet Yusuf Cakmak: Permettez-moi de rejoindre les commentaires ci-dessus - même si votre solution fonctionne pour ce cas spécifique, elle échouera immédiatement car vous avez un ordre de colonne `` inconfortable '', ou d'autres colonnes entre les deux, même sumifs () serait un bien meilleur choix



2
votes

Je suppose que c'est ce que vous recherchez: = SUMPRODUCT ((F $ 2: F $ 5) * (E $ 2: E $ 5 <= H3) * (D $ 2: D $ 5> H3)) entrez la description de l'image ici


0 commentaires

1
votes

Vous pouvez utiliser un INDEX / MATCH:

 entrez la description de l'image ici

MATCH($F3,$A$3:$A$7,1)

La formule de correspondance:

XXX

Renvoie l'index du premier zip qui est inférieur à celui spécifié.

La formule INDEX renvoie la valeur de la cellule qui a le même index, mais dans notre "Échelle des prix.

Le wrapper IFERROR affiche simplement "Not found" au lieu d'une erreur.

Vous remarquerez que de cette façon, votre colonne "Zip Max" n'est pas vraiment nécessaire. Tout Zip inférieur au Min renverra quand même une erreur. Et j'ai ajouté un code postal à la liste pour m'assurer que tout ce qui est supérieur renvoie "= NA ()".


0 commentaires