Как сделать запрос с помощью Google Spreadsheet, который проверяет дату

11

У меня есть диапазон, который идет от B4:H124. Все ячейки в столбце B являются датами. Я хотел бы получить данные из строки ( B:H), где DATE равен содержанию определенной ячейки, скажем, Q4.

Как мне построить правильный запрос?

Пока что я придумал это:

=QUERY(B2:G124; "select * where B = date '2012-02-28'")

Это работает, хотя формат ячеек в B - ДД / ММ / ГГГГ.

Как я могу изменить 2012-02-28на $Q4? Когда я пытаюсь, я получаю следующую ошибку:

=QUERY(B2:G124; "select * where B = date '"&Q4&"'")

Invalid query: Invalid date literal [10/02/2012]. Date literals should be of form yyyy-MM-dd.

Когда я смотрю на ячейку, формат такой yyyy-mm-dd, но когда я дважды щелкаю по ней, формат меняется на DD-MM-YYYY.

Что мне делать?

Кроме того, как я могу суммировать значения из запроса, не включая столбец B?

Kenci
источник

Ответы:

3

Я не мог найти хитрость для реальной ячейки даты, но вы могли бы обойти, если ничего больше, добавив одиночную кавычку ( ') перед датой в формате: YYYY-MM-DDв Q4ячейке.

Эта одинарная кавычка означает, что она будет проанализирована как строка.

Lipis
источник
11

Вы можете отформатировать дату следующим образом:

=QUERY(B2:G124; "select * where B = date '" & text(Q4,"yyyy-MM-dd") & "'")

Чтобы суммировать значения в столбце C, сделайте это:

=QUERY(B2:G124; "select sum(C) where B = date '" & text(Q4,"yyyy-MM-dd") & "'")

Не уверен, как суммировать несколько столбцов, хотя - все еще довольно новый для этого сам!

s6mike
источник
2

Это должно работать:

=QUERY(B2:G124; "select * where B = date '"&text(Q4;"yyyy-MM-dd")&"'")

Во всяком случае, у меня была та же проблема, и, наконец, у меня это сработало.

Дело в том, что вы запутались в сообщении

Invalid query: Invalid date literal [10/02/2012]. Date literals should be of form yyyy-MM-dd.

Это потому, что формат даты вашей ячейки Q4 выглядит как дд / мм / гггг. У меня есть то же самое: даже если это выглядит как дд / мм / гггг, вы просто должны поставить его так, как указано во второй строке моего ответа выше.

Андрейко Дан
источник
1

Поместите желаемую дату в новую ячейку, как Q3в этом формате:2/28/2012

Тогда в Q4типе клетки=YEAR(Q3) & "-" & DEC2OCT(MONTH(Q3), 2) & "-" & DAY(Q3)

Это позволит получить дату из Q3ячейки и преобразовать ее в строку в Q4ячейке.

Это более полезно, если вы хотите текущую дату. Вместо того, чтобы получать дату из Q3вашего, вы можете использовать, now()чтобы получить сегодняшнюю дату следующим образом:=YEAR(now()) & "-" & DEC2OCT(MONTH(now()), 2) & "-" & DAY(now())

Брэд С.
источник
1

Финал должен быть:

=QUERY(B2:G124; "select * where B = date ' "  & text( Q4 ,"yyyy-MM-dd") & "'")

Где Q4 - обычная ячейка с форматированием даты, в которой вы можете ввести дату.

Скопируйте вышеупомянутое в свой блокнот и увеличьте размер шрифта к тому, о чем все.

Трудно увидеть сингл 'в двойном "здесь.

raymond703
источник
0

Вы также можете вычислить дату вне строки и удалить date, например,

=QUERY(B2:G124; "select * where B = '" & Q4)

Q4 фактически передается в виде целого числа, которое QUERY преобразует дату в любом случае.

Макс Генис
источник
0

Используя функцию Google QUERY:

Для sum нескольких столбцов важно включить labelпараметр в конце запроса

=QUERY(B2:G124; "select sum(C) + sum(D) + sum(E) + sum(F) + sum(G) label sum(C) + sum(D) + sum(E) + sum(F) + sum(G) '' ") 

примечание: ссылки на столбцы чувствительны к регистру и обязательны 2 одинарные кавычки в конце запроса.

Чтобы добавить whereпредложение, ссылающееся на значение даты в ячейке : из решения s6mikes

=QUERY(B2:G124; "select * where B = date '" & text(Q4,"yyyy-MM-dd") & "') 

2 запроса в сочетании ...

=QUERY(B2:G124; "select sum(C) + sum(D) + sum(E) + sum(F) + sum(G) where B = date '" & text(Q4,"yyyy-MM-dd") & "' label sum(C) + sum(D) + sum(E) + sum(F) + sum(G) '' ")
Бойцовая рыбка
источник
-1

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

telkontar
источник