Синтаксис данных запроса - PullRequest
0 голосов
/ 15 января 2019

Я пытаюсь использовать запрос для отображения данных из нескольких листов Google. Я делаю новый лист каждую неделю, который имеет конкретное название листа, например, Week of 01/13, Week of 01/06 и так далее.

Вот откуда появилась моя идея для справки:

У меня есть сводная таблица, которая использует COUNTA(INDIRECT("'" & A5 & "'!E4:E",true)

A5 - это ячейка, объединяющая дату и слова для репликации имена листов.

Строка в сводной таблице не заполняется до B5<=today()

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

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

=QUERY({'Week of 01/13'!A:P;'Week of 01/06'!A:P;'Week of 12/30'!A:P;'Week of 12/23'!A:P;'WEEK OF 12/16'!A:P;'WEEK OF 12/09'!A:P;'WEEK OF 12/02'!A:P;'WEEK OF 11/25'!A:P;'WEEK OF 11/18'!A:P;'WEEK OF 11/11'!A:P;'WEEK OF 11/04'!A:P;'WEEK OF 10/28'!A:P;'WEEK OF 10/21'!A:P;'WEEK OF 10/14'!A:P;'WEEK OF 10/07'!A:P;'WEEK OF 09/30'!A:P;'WEEK OF 09/23'!A:P;'WEEK OF 09/16'!A:P;'WEEK OF 09/09'!A:P;'WEEK OF 09/02'!A:P},
 "Select * where Col11 = 'RD' order by Col2 desc",0)

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

Sample structure of reference

Используя следующий код, я могу получить объединение, которое даст мне нужный массив,

=if(H4<=today(),CONCATENATE("'",H$1,text(H4,"mm/dd"),"'!A:P;",),"")

но когда я пытаюсь ввести его в функцию запроса, он просто возвращает объединенный текст:

=QUERY(I1,"Select *")

'Week of 01/06'!A:P;'Week of 01/13'!A:P

Я пробовал с и без фигурных скобок, но безуспешно.

Мне бы хотелось, чтобы лист мог обновляться и видеть, что это правильный день, заполняется новое имя листа и обновляется запрос.

Мне нужна помощь, чтобы I1 заработал.

Ссылка на лист запроса теста

Ответы [ 2 ]

0 голосов
/ 23 июля 2019

Если вам действительно нужно использовать I1, попробуйте следующую формулу

=QUERY({INDIRECT(INDEX(SPLIT(I1,";"),1,1));INDIRECT(INDEX(SPLIT(I1,";"),1,2))},"Select *")

I2 имеет формулу, которая возвращает это значение 'Week of 01/06'!A:P;'Week of 01/13'!A:P. Это текстовое значение, имеющее два диапазона адресов, разделенных точкой с запятой.

Вышеприведенная формула использует SPLIT для разделения каждого адреса, она использует INDEX для принятия соответствующей части, которая будет использоваться в качестве аргумента INDIRECT, который возвращает массив значений. Эти массивы значений используются для создания другого массива значений, который используется в качестве первого аргумента QUERY.

0 голосов
/ 16 января 2019

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

Так что для этого вам, вероятно, понадобится

=QUERY(INDIRECT(I1),"Select *")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...