VLOOKUP требует поиска в крайнем левом столбце, чтобы он не работал. INDEX + MATCH будет работать, но MATCH не может искать несколько или двухмерные диапазоны. Обходной путь - объединить несколько МАТЧЕЙ для разных диапазонов.
Результат поиска в E7 использует эту формулу:
=IFERROR(INDEX(A2:A5,IFERROR(MATCH(E8,D2:D5,0),0)+IFERROR(MATCH(E8,G2:G5,0),0)),"Invalid Sub_code")
Каждый столбец имеет свой МАТЧ. Совпадение будет происходить только в одном столбце, поэтому IFERROR возвращает ноль, если столбец не имеет соответствия. Затем добавление значений совпадения объединит индекс местоположения для столбца с совпадением и ноль для любых дополнительных искомых столбцов. Название вопроса гласит "две или более колонки". Это можно расширить, просто добавив другое выражение MATCH для каждого дополнительного столбца.
INDEX оборачивается своим собственным IFERROR на случай, если введен неверный Sub_code. MATCH не учитывает регистр, поэтому он все равно найдет совпадение, если только заглавные буквы не совпадают.
Конечно, вы можете иметь несколько ячеек ввода и соответствующих ячеек результатов.
альтернатива
@Rajesh S заметил, что это также может быть реструктурировано:
=IFERROR(INDEX(A2:A5,MATCH(E8,D2:D5,0)),IFERROR(INDEX(A2:A5,MATCH(E8,G2:G5,0)),"Invalid Sub_code"))
Это использует каждое выражение MATCH с INDEX. IFERROR на INDEX также заботится о любых ошибках MATCH. IFERRORS затем вкладываются, поэтому ошибка в первом поиске переходит ко второму, а ошибка там - в неверное предупреждение Sub_code. Это заканчивается той же длины, потому что, в то время как счетчик функции IFERROR уменьшается, счетчик функции INDEX увеличивается. Это может быть увеличено для дополнительных столбцов путем дополнительного вложения.
Используйте ту версию, которая кажется наиболее интуитивной.
Для сравнения структуры и логики я разобью формулы.
Альтернатива 1:
=IFERROR(
INDEX(A2:A5,
IFERROR( MATCH(E8,D2:D5,0) ,0) + IFERROR( MATCH(E8,G2:G5,0) ,0) )
,"Invalid Sub_code")
Альтернатива 2:
=IFERROR(
INDEX(A2:A5, MATCH(E8,D2:D5,0) )
,IFERROR(
INDEX(A2:A5, MATCH(E8,G2:G5,0) )
,"Invalid Sub_code") )