Query и ImportRange с динамическими значениями

У меня есть 2 листа, которые связаны.

Лист 1: имеет столбец идентификатора и столбец статуса (поле статуса обновляется командой вручную)

Лист 2: имеет столбец ID и столбец статуса (+ много других полей)

Требование: столбец состояния на листе 2 должен быть обновлен с листа 1, если столбец идентификатора на листе 2 = столбец идентификатора на листе 1

Я написал Query и ImportRange, но я мог обнаружить, что Query работает, только когда я сравниваю его со статическим значением (например, Да). Я хочу, чтобы он сравнивал значение в столбце идентификатора с обоих листов и импортировал только те строки, которые совпадают.

=QUERY(IMPORTRANGE("1ZkPaYb1IIIkcbVerdmZ-Ru1vxFu1YMWj74QNQj2jles", "Ops Action Sheet!B2:B10000"),"select Col2 where Col1 = 'Yes'")

person Rakesh    schedule 06.07.2019    source источник


Ответы (2)


Это не дает прямого ответа на ваш вопрос об использовании QUERY, но я считаю, что эта функция может быть не лучшим инструментом для того, что вы пытаетесь сделать.

Ниже я пишу решение, использующее альтернативную функцию VLOOKUP.

Я предполагаю, что под «Листом-1» и «Листом-2» вы на самом деле имеете в виду совершенно разные электронные таблицы, судя по использованию вами IMPORTRANGE.

Если вы не возражаете, чтобы копия содержимого Sheet-1 находилась в Sheet-2, вот что вы можете сделать:

  1. На новом листе (вкладке) в Листе-2 скопируйте эту функцию (заполните sheet_1_url):
=IMPORTRANGE("sheet_1_url", "Ops Action Sheet!$A:$B")
  1. Вы должны увидеть копию данных из Sheet-1 на этой вкладке. Вы можете скрыть эту вкладку или защитить ее, если хотите.
  2. На вкладке основных данных в Листе 2 скопируйте эту формулу в столбец Статус (при условии, что ваш ID находится в A2:
=IFERROR(VLOOKUP($A2,range_from_step_1,2,),)
  1. Скопируйте эту формулу столько, сколько вам нужно.

Однако, если вы по какой-либо причине не хотите иметь копию данных Sheet-1 на Sheet-2, вы можете просто пропустить шаги 1-2 выше и сразу перейти к шагу 3 со следующей формулой в Sheet-2:

=IFERROR(VLOOKUP($A2,IMPORTRANGE("sheet_1_url", "Ops Action Sheet!$A:$B"),2,),)

Не то чтобы я рекомендовал это, поскольку технически вы будете импортировать свои данные виртуально в пределах формулы N количество раз, что значительно снизит производительность.

Вы можете увидеть ссылки на используемые выше формулы здесь:

person James    schedule 06.07.2019

отредактируйте, чтобы отразить и вставить в таблицу 2:

=ARRAYFORMULA(IFERROR(VLOOKUP(A2:A, IMPORTRANGE("ID", "Sheet!A:C"), {2, 3}, 0)))

A2:A - столбец идентификаторов в таблице 2
Sheet!A:C - столбец A этого диапазона содержит идентификаторы
{2, 3} - переносит столбцы B и C из таблицы 1 в таблицу 2

person player0    schedule 06.07.2019