Электронные таблицы Google Query Language получают данные со многих других листов - PullRequest
1 голос
/ 14 февраля 2012

Как я могу получить данные со многих листов?В документации Справочные данные с других листов является примером

=Sheet1!A1

Я написал тестовый запрос, и он работает

=Query(otherSheet!A1:P999, "select A, B, C")

Но я хочу получить данные одним запросом измного столов.Является ли это возможным?Как я могу?

--- ОБНОВЛЕНИЕ ---

Например, у меня есть 2 листа как clients и orders, и я хочу получить имя пользователя, который купил какой-то продукт в прошлом месяце.Я нашел решения, например, я получаю cient_id из order table, а затем я получаю username из clients table

=Unique(Query(orders!A1:P999, "select D WHERE I = 'paid' and J > date '2010-01-15' LABEL D 'client_id' "))

=vlookup(A2,contacts!B:C,2,false)

Вы можете написать его одним запросом?

1 Ответ

3 голосов
/ 15 февраля 2012

Вы должны быть более конкретным, чтобы иметь возможность получить хороший ответ, но я постараюсь дать вам указания, которые я могу придумать.

Вы можете физически объединить свои данные и создать единый листсо всеми данными.Вам не нужно ни копировать данные, ни ссылаться на них (используя =), так как вы можете использовать функцию EXPAND:

=EXPAND(SORT(Sheet1!A:C))

Другой вариант - присоединиться к критериям, которые вы хотите иметьна каждом листе с использованием ARRAYFORMULA;что-то вроде:

=ARRAYFORMULA((SheetX!A2:C3>5)*(SheetY!A2:C3="Category A")*(A2:C3))

--- ОБНОВЛЕНО ---

Для обновленной функции попробуйте что-то вроде:

=ARRAYFORMULA(VLOOKUP(
  (orders!I:I="paid")*(orders!J:J>"2010-01-15")*(orders!D:D),
  contacts!B:C,2
 ))

Вы можете добавить функцию UNIQUEа также прямо внутри VLOOKUP, а также другие функции, такие как SORT.

Обратите внимание, что вы также можете заменить значения запроса (например, "2010-01-15") значениямив ячейках (например, E2) вместо жестко закодированных значений в функции.

...