Если заявление вложено с Vlookup в Google Sheets - PullRequest
0 голосов
/ 19 октября 2018

Я борюсь с оператором If в пределах Vlookup для Google Sheets.

Текущая формула:

=IfError(ARRAYFORMULA(if(len($A3:$A),VLOOKUP($A3:$A,
{'Form responses 3'!$E2:$E,'Form responses 3'!$G2:$G},2,0),)))

Так что вышеупомянутое делает поиск значенияв A3:A на другом листе, и если в E:E есть совпадение, верните значение во втором столбце или G:G.

Проблема с приведенной выше формулой заключается в том, что в A3:Aможет быть только одно уникальное значение (например, 1 - 36), НО существует проблема с G2:G, имеющим несколько итераций одного и того же числа, при котором Vlookup принимает только первое совпадающее значение.

Поэтому я пытаюсь расширить приведенную выше формулу, попросив ее проверить другой уникальный, прежде чем дать мне значение.Отсюда следующая формула:

=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),))))

Итак, что сейчас пытается сделать, это проверить сначала, чтобы увидеть if D:D =3, а затем сделать VLookup, упомянутый выше, только IF D:D is 3 (в этом примере).

Я явно не правильно делаю If lookup for =3, так как при вводе второй формулы в ячейку я по-прежнему сопоставляю первое значение, и это не учитывает поиск первых 3.

Я буду рад поделиться таблицей, если кто-то захочет взглянуть на формулу во всем ее контексте.

1 Ответ

0 голосов
/ 25 октября 2018

Основная проблема с формулой:

=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Я предлагаю сначала сделать урок и изучить его синтаксис.Приведенный выше пример немного продвинут для начала (т. Е. Выбор из одного листа на основе значений ячеек в другом).

...