2015-10-13 1 views
2

Мне нужно найти способ поиска значения в именованном диапазоне и вернуть столбец рядом с этим диапазоном. Причина проста: я использую проверку списка с именованным диапазоном в столбце A. В этом списке есть полное название типов продуктов (например, Relay, Contactor, Enclosure), и мне нужно вернуть краткое описание из столбца B (ex Rly, Cont, Encl), так что, когда пользователь ищет список, легко найти то, что он ищет. Я знаю, что могу расширить свой диапазон до $ A: $ B, но если я это сделаю, то все значения $ B будут включены в список ...Excel: Vlookup в именованном диапазоне и возвращает значение за пределами диапазона

Это показывает способ выяснить, что мне нужно: = VLOOKUP (A1; «RANGE + 1C», 2,0) Я пробовал так много способов со смещением и индексом, но не смог найти способ сделать это ... Я даже думал, что это можно сделать с относительной ссылкой (ex. = VLOOKUP (A1, описание, 1 «RC [1]», 0) или что-то в этом роде ... Также просмотрен в Google, чтобы найти информацию, но, похоже, это что-то очень незнакомое ...

Мне нужно сделать это в формуле, а не в VBA.

Вот ссылка на пример файла : http://www.filedropper.com/descriptionbuilder

Подсказка?

Спасибо!

+0

Самое простое решение - создать еще один именованный диапазон с обоими столбцами и использовать его в VLOOKUP. – BrakNicku

ответ

2

Что вы, скорее всего, захотите вместо VLOOKUP, это КОММУТАЛЬНАЯ КОМАНДА КОМАНДЫ &.

MATCH - это функция, которая сообщает номер строки, где дублирующее значение найдено из вашего выбранного списка - это похоже на половину VLOOKUP. INDEX - это функция, которая вытягивает значение из списка, основываясь на его позиции #, которую вы ему даете, - это похоже на вторую половину VLOOKUP.

Я вижу ваш один диапазон в столбце A с вашими идентификационными данными. Описание. Я предполагаю, что столбец B не имеет диапазона с именем, который совпадает с вашим. Я предполагаю, что столбец B имеет другие данные, а столбец A начинается где-то после первой строки [в частности, я предполагаю, что он начинается с строки 5]. Вместе формула будет выглядеть так:

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

Это говорит: найдите строку # в описании, которая соответствует тексту в A1. Затем добавьте строку # из A5 - 1 (тогда она выравнивает верхнюю часть описания с вершиной столбца B). Затем потяните это значение из столбца B.

Альтернативный метод с использованием ВПР и OFFSET

Другой метод должен был бы сначала определить, сколько строк в описании, а затем, используя эту информацию и OFFSET функцию, создать новая область, которая по существу представляет собой описание, но происходит через колонку A & B, а не только колонки A. Это будет выглядеть следующим образом (опять же, при условии, описание начинается с A5):

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

Это говорит: подсчитать, сколько строк в Описание. Создайте массив с OFFSET, который начинается с A5, с таким количеством строк, как в описании, и 2 столбца. (Таким образом, с 3 элементами в описании, это будет A5: B7). Затем используйте этот новый диапазон в VLOOKUP и попробуйте найти A1 в области описания в столбце A и вернуть результат из этой строки в столбце B.

1

Вы можете использовать Offset расширить именованный диапазон на один столбец, а затем кормить его в Vlookup Что-то вроде:

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

Для теста, я создал именованный диапазон (так называемый «RANGE») в колонке A , Я поместил значения в столбец B, смежные с именованным диапазоном, поместил значение поиска в C1 и ввел приведенную выше формулу. Ему удается получить желаемое значение.

On edit: Я думаю, что ответ Grade'Eh'Bacon превосходный и, вероятно, лучший подход к этой конкретной проблеме, но мне кажется потенциально полезным знать, как расширить ссылку на именованный диапазон, не изменяя само имя, поэтому я сохраняю этот ответ.