2015-10-13 8 views
2

Je dois trouver un moyen de rechercher une valeur dans une plage nommée et de renvoyer la colonne à côté de cette plage. La raison est simple: j'utilise une validation de liste avec une plage nommée dans la colonne A. Dans cette liste, il y a le nom complet des types de produits (ex: Relais, Contacteur, Enclosure) et je dois retourner une courte description de la colonne B (ex Rly, Cont, Encl) afin que lorsque l'utilisateur fait une recherche dans la liste, il est facile de trouver ce qu'il cherche. Je sais que je pourrais étendre ma gamme à $ A: $ B mais si je le fais, alors toutes les valeurs de $ B seront incluses dans la liste ...Excel: Vlookup dans la plage nommée et renvoie une valeur en dehors de la plage

Ceci montre un moyen de comprendre ce dont j'ai besoin: = VLOOKUP (A1; "RANGE + 1C", 2,0) J'ai essayé tant de façons avec offset et index mais je n'ai pas trouvé de moyen de le faire ... J'ai même pensé qu'il serait possible de le faire avec référence relative (ex. = VLOOKUP (A1, Description; 1 "RC [1]", 0) ou quelque chose comme ça ... Aussi cherché dans Google pour trouver quelques infos mais il semble être quelque chose de très peu familier ...

Je dois le faire dans une formule et non dans VBA

Voici le lien vers un exemple de fichier : http://www.filedropper.com/descriptionbuilder

Une indication?

Merci!

+0

La solution la plus simple consiste à créer une autre plage nommée avec les deux colonnes et à l'utiliser dans VLOOKUP. – BrakNicku

Répondre

2

Qu'est-ce que vous voulez sans doute au lieu de RECHERCHEV est le MATCH & combo INDEX.

MATCH est une fonction qui vous indique le numéro de la ligne où une valeur en double se trouve de votre liste sélectionnée - il est comme la moitié de RECHERCHEV. INDEX est une fonction qui tire une valeur d'une liste, basée sur sa position # que vous lui donnez - c'est comme l'autre moitié de VLOOKUP.

Je vois votre une plage dans la colonne A avec vos données d'identification est une Description - Je suppose que la colonne B n'a pas de plage « nommé » qui aligne avec le vôtre. Je supposerai que la colonne B a d'autres données, et que la colonne A commence quelque part après la ligne un [en particulier, je suppose que cela commence à la ligne 5]. La formule devrait ressembler à ceci:

=INDEX(B:B,ROW(A5)-1+MATCH(A1,Description,0)) 

Cela dit: trouvez le numéro de ligne dans Description qui correspond au texte dans A1. Ajoutez ensuite le numéro de ligne A5 - 1 (cela aligne le haut de la description avec le haut de la colonne B). Tirez ensuite la valeur de la colonne B.

Méthode alternative avec RECHERCHEV et OFFSET

Une autre méthode serait d'abord définir le nombre de lignes dans la description, puis en utilisant cette information et la fonction OFFSET, créez un nouvelle zone qui représente essentiellement description, mais va dans la colonne A & B au lieu de la colonne juste A. Ceci se présentera comme suit (encore une fois, en supposant description commence à A5):

=VLOOKUP(A1,OFFSET(A5,0,0,ROWS(Description),2),2,0) 

Cela dit: compter le nombre de lignes en La description. Construire un tableau avec OFFSET qui commence à A5, avec autant de lignes qu'il y a dans la description, et 2 colonnes. (Donc, avec 3 éléments dans la description, ce serait A5: B7). Ensuite, utilisez cette nouvelle plage dans VLOOKUP, et essayez de trouver A1 dans la zone Description de la colonne A, et renvoyez le résultat de cette ligne dans la colonne B.

1

Vous pouvez utiliser Offset pour développer une plage nommée par une colonne, puis l'introduire dans Vlookup Quelque chose comme:

=VLOOKUP(C1,OFFSET(RANGE,0,0,,1+COLUMNS(RANGE)),1+COLUMNS(RANGE)) 

Pour tester est, je créé une plage nommée (appelée « RANGE ») dans la colonne A , J'ai placé les valeurs dans la colonne B adjacente à la plage nommée, mettre une valeur de recherche dans C1 et la saisie de la formule ci-dessus. Il réussit à récupérer la valeur désirée. Sur edit: Je pense que la réponse de Grade'Eh'Bacon est excellente et est probablement la meilleure approche de ce problème spécifique, mais il me semble potentiellement utile de savoir comment étendre la référence d'une gamme nommée sans changer le nomme lui-même, alors je garde cette réponse.