9

Используя приведенную ниже таблицу примеров, я могу использовать формулу =VLOOKUP("ABC123456",Table1,3,FALSE) для поиска значения Demand , но я хочу иметь возможность выполнять поиск с помощью поля Cust Part без необходимости сделайте поле Cust Part первым столбцом в таблице. Создание Cust Part в первом столбце не является приемлемым решением, потому что мне также нужно выполнить поиск с использованием поля Part , и я не хочу использовать жестко закодированные диапазоны (например, $B$2:$C$4) в основном в качестве вопроса предпочтения, но также потому, что использование имен таблиц и полей облегчает чтение формулы. Есть какой-либо способ сделать это?

3 ответа3

10

Можно использовать OFFSET для возврата диапазона Table1, но на 1 столбец больше, например

=VLOOKUP("AZ12345",OFFSET(Table1,0,1),2,FALSE)

Это будет искать AZ12345 в столбце CustPart и вернет значение из следующего столбца

7

Вы можете комбинировать INDEX и MATCH чтобы получить тот же результат VLOOKUP без сравнения с первым столбцом. Хотя это немного сложнее.

=INDEX(Table1[Demand],MATCH("AZ12345",Table1[Cust Part],0))

По сути, вы используете MATCH чтобы найти номер строки, и INDEX чтобы получить значение.

Примечание. В отличие от VLOOKUP , если результатом является пустая ячейка, INDEX вернет 0 вместо пустой строки.

2

Как насчет чего-то вроде:

=VLOOKUP("ABC123456";Table1[[Cust Part]:[Demand]];COLUMNS(Table1[[Cust Part]:[Demand]]);FALSE) 

Я предпочитаю это, чтобы вы могли видеть, что вы делаете, даже в более сложных таблицах, плюс, если структура таблицы изменится, формула будет работать, пока столбец Cust Part находится перед столбцом Demand.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .