J'ai une gamme de "limites" de codes postaux multiples avec un coût spécifique qui y est associé.
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).
3 Réponses :
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)
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
Vous pouvez utiliser un INDEX / MATCH:
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 ()".
1269 ne devrait-il pas être 300?
désolé oui signifiait 2169