Основная проблема с формулой:
=IfError(ARRAYFORMULA(If('Form responses 3'!D:D=3,,
if(len($A3:$A),VLOOKUP($A3:$A,{'Form responses 3'!$E2:$E,'
Form responses 3'!$G2:$G},2,0),))))
заключается в том, что VLOOKUP()
может иметь только один критерий поиска.Вы пытаетесь смоделировать несколько критериев, поставив перед VLOOKUP()
оператор IF()
.В некоторых случаях вы можете достичь результатов, но в итоге вы получите формулы, которые трудно понять и отладить.
Вместо этого используйте функцию QUERY()
, где у вас может быть несколько критериев.QUERY()
гораздо более гибок, позволяя использовать несколько критериев поиска.
Его синтаксис: QUERY(range, select statement, [headers])
Вот пример, который дает правильное значение 87 в вашем примере.
=query('Form responses 3'!$A$2:$G$6,"select G where D="&B$1&" and E = "&A3&"",0)
Объяснение:
Form responses 3'!$A$2:$G$6
--- Диапазон для выбора
"select G
--- Выберите столбец G из соответствующих строк в диапазоне
where D="&B$1&
"--- критерии для сопоставления столбца D в диапазоне с ячейкой B1
and
--- логический and
для дополнительных критериев для следования
`E = "& A3 &" "--- критерии для сопоставления столбца E в диапазоне с ячейкой A3
Я настоятельно рекомендую изучить QUERY
и все возможности различных select
операторов.
Я добавил еще sheet8
на связанный лист здесь, чтобы показать запрос в действии.Приведенная выше формула находится в ячейке E3
и дает ожидаемое значение 87
.
https://docs.google.com/spreadsheets/d/1xo8edBZQ5bJXUqqGxqPMZeyrdAQgIFZzkgv7Dct1g0A/edit?usp=sharing
Примечание: Если вы не знакомы с QUERYЯ предлагаю сначала сделать урок и изучить его синтаксис.Приведенный выше пример немного продвинут для начала (т. Е. Выбор из одного листа на основе значений ячеек в другом).