Используя приведенную ниже таблицу примеров, я могу использовать формулу =VLOOKUP("ABC123456",Table1,3,FALSE)
для поиска значения Demand
, но я хочу иметь возможность выполнять поиск с помощью поля Cust Part
без необходимости сделайте поле Cust Part
первым столбцом в таблице. Создание Cust Part
в первом столбце не является приемлемым решением, потому что мне также нужно выполнить поиск с использованием поля Part
, и я не хочу использовать жестко закодированные диапазоны (например, $B$2:$C$4
) в основном в качестве вопроса предпочтения, но также потому, что использование имен таблиц и полей облегчает чтение формулы. Есть какой-либо способ сделать это?
3 ответа
Можно использовать OFFSET
для возврата диапазона Table1, но на 1 столбец больше, например
=VLOOKUP("AZ12345",OFFSET(Table1,0,1),2,FALSE)
Это будет искать AZ12345 в столбце CustPart и вернет значение из следующего столбца
Вы можете комбинировать INDEX
и MATCH
чтобы получить тот же результат VLOOKUP
без сравнения с первым столбцом. Хотя это немного сложнее.
=INDEX(Table1[Demand],MATCH("AZ12345",Table1[Cust Part],0))
По сути, вы используете MATCH
чтобы найти номер строки, и INDEX
чтобы получить значение.
Примечание. В отличие от VLOOKUP
, если результатом является пустая ячейка, INDEX
вернет 0
вместо пустой строки.
Как насчет чего-то вроде:
=VLOOKUP("ABC123456";Table1[[Cust Part]:[Demand]];COLUMNS(Table1[[Cust Part]:[Demand]]);FALSE)
Я предпочитаю это, чтобы вы могли видеть, что вы делаете, даже в более сложных таблицах, плюс, если структура таблицы изменится, формула будет работать, пока столбец Cust Part находится перед столбцом Demand.