
https://i.stack.imgur.com/1GIk4.png
Здравствуйте, мне нужно использовать VLOOKUP для поиска среди нескольких критериев, нескольких синонимов и вывода значения на основе входных данных таблицы. Например, изображение 1 — это список синонимов, которые будут иметь последующее значение в другой таблице. Я хотел бы, чтобы функция искала ЛЮБОЕ из этих имен и выводила значение в соответствующем столбце VLOOKUP для каждого образца. Я попробовал это:
=VLOOKUP(OR(C$2=TRUE,C$3=TRUE,C$4=TRUE,C$5=TRUE,C$6=TRUE,C$7=TRUE,C$8=TRUE)=TRUE,'[Worksheet2.xlsx]BD-7 1'!$F$1:$G$73,2)
но мне не везет. Похоже, VLOOKUP не ценит использование нескольких критериев. Спасибо за любую помощь!
решение1
- VLOOKUP() находит ОДИН элемент (первый аргумент) в списке,
- список находится в первом столбце массива, который у вас есть в качестве второго аргумента,
- третий аргумент указывает, какой столбец выбрать из вашего массива, 1= возвращает соответствующий элемент
- и последний аргумент должен быть ЛОЖЬЮ, чтобы попытаться найти ТОЧНОЕ совпадение.
Теперь с учетом сказанного: вы можете ввести любой (отдельный) из синонимов или даже шаблон соответствия[1], чтобы найти.
Возвращаемое значение или элемент может находиться в любом столбце справа от первого (включенного в определение массива) или в первом столбце.
[1] *
для нескольких возможных символов, ?
для одного
решение2
Ваше решение в комментариях к Hannu
ответу должно работать нормально. Нижеследующее можно считать немного более прозрачным, и оно позволит перехватывать больше ошибок. (Однако перехват большего количества ошибок может скрыть проблемы, которые вы предпочли бы обнаружить и решить, хотя это не обязательно должно беспокоить, если ваши данные (значения поиска ИЛИ наборы данных возвращаемых значений) являются приличными и, скорее всего, всегда будут такими.)
=SUM(IFERROR(VLOOKUP(C1:C3,C13:D14,2,FALSE),0))
Он IFERROR()
перехватывает неудачные поиски и присваивает им нулевое значение, не добавляя ничего к желаемой сумме, а затем SUM()
просто суммирует их все.
(Возможно, это будет быстрее, а возможно и нет. Вероятно, это не проблема, если поиск происходит в одном месте, но если рассчитывать для всего набора данных, это может иметь значение, в зависимости от его размера.)