2016-05-09 13 views
3

У меня есть проблема с поиском LOOKUP для поиска по столбцу сверху вниз. Вот ситуация. Мне нужно создать формулу для Excel для поиска аппаратной части внутри предложений.MS Excel LOOKUP сверху вниз столбец

Пример:

Предложение (A1)

Клиент ПК не включается. Проверьте материнскую плату. Материнская плата неисправна. Замените материнскую плату. У блока питания недостаточно энергии. Замените блок питания.

Здесь диапазон поиска колонки (МЕТИЗЫ)

  • заменить БП
  • заменить материнскую плату

столбец диапазона результата (HARDWARE_PART)

  • БП
  • материнская плата

Формула я использую

LOOKUP(9999;SEARCH(HARDWARE;A1);HARDWARE_PART)

Результат будет "материнская плата". Поскольку LOOKUP будет искать столбец снизу вверх.

Что я буду делать прямо сейчас, чтобы LOOKUP выполнял поиск столбца сверху вниз, чтобы он мог обнаружить другую заменяемую деталь.

ответ

3

Использование названных диапазонов - хороший шаг; динамические названные диапазоны еще лучше. Однако они создают проблему, порождая путаницу, пытаясь вернуть правильный относительный номер строки в INDEX function, когда они не запускаются в первой строке.

Моих два именованные диапазоны (например, аппаратные средства и HARDWARE_PART) используются Относится к: формулам, как,

=Sheet1!$AA$2:INDEX(Sheet1!$AA:$AA, MATCH("zzz",Sheet1!$AA:$AA)) 
=Sheet1!$AB$2:INDEX(Sheet1!$AB:$AB, MATCH("zzz",Sheet1!$AA:$AA)) 

Это потребовал модификации возвращенных строк по , так как они начались во втором ряду.

Стандартная формула в В1,

=IFERROR(INDEX(HARDWARE_PART, AGGREGATE(15, 6, (ROW(HARDWARE)-1)/ISNUMBER(SEARCH(HARDWARE, $A1)), COLUMN(A:A))), "") 

Заливка вправо для последующих матчей в приоритетном порядке убывания.

motherboard

IFERROR function «обертка» может не показывать #NUM! ошибки на не-спичек путем замены возврата ошибок для нулевой legth строки.

Если вы хотите, чтобы изменить приоритет, поменять опцию (SMALL function) AGGREGATE¹ для (LARGE function).

Pre-xl2010 добавление

Для версий Excel, которые не могут использовать агрегатную функцию, это стандартная формула, не CSE дублирует результаты. В В1, как,

=IFERROR(INDEX(HARDWARE_PART, SMALL(INDEX(ROW(HARDWARE)-1+ISERROR(SEARCH(HARDWARE, $A1))*1E+99, ,), COLUMN(A:A))), "") 

¹ AGGREGATE function была введена с Excel 2010. Он не доступен в более ранних версиях.

+0

Hi Jeeped. Спасибо за ответ. Я поменяю свой названный диапазон на динамический, как вы рекомендовали. И спасибо за пример. Проблема в том, что я все еще использую Microsoft Office 2007. Поэтому я не могу реализовать функцию AGGREGATE – NyamO

+0

NyamO, я добавил версию XL2010 с той же формулой. – Jeeped

+0

OMG Jeeped. Огромное спасибо. Ты просто меня спасешь. Поистине ценим это. – NyamO