Задать вопрос
freebird
@freebird
3D apparel artist

Как создавать пустую строку при отсутствии возвращаемых данных?

Есть запрос QUERY к нескольким листам таблицы, где каждый лист содержит данные за один месяц.
Пример: =query({ '2020/01'!A1:F99; '2020/02'!A1:F99; '2020/03'!A1:F99}; " SELECT * WHERE (Col1 = "&J1&") ")

Если соблюдается условие WHERE (поиск по ID), то возвращаются запрашиваемые данные и заполняется строка таблицы. Всё ОК.
Но в том случае, когда в листе/месяце нет данных по искомому ID, то и возвращать получается нечего и таблица строится с пропуском данного месяца. Как сделать так, чтобы в случае отсутствия данных строка всё равно создавалась, (пустая или с нулями)? Я пробовал что-то навернуть с оператором IF, но ничего не вышло.

Подскажите пожалуйста решение. Если нет возможности это сделать в рамках QUERY запроса, то может быть можно придумать дополнительную конструкцию (формулу, дополнительный запрос к уже полученным данным)?

Сейчас получается так (2020/02 пропущен):
ID | Data | Date
21 | 45 | 2020/01
21 | 22 | 2020/03

А нужно чтобы было так:
ID | Data | Date
21 | 45 | 2020/01
21 | 0 | 2020/02
21 | 22 | 2020/03
  • Вопрос задан
  • 853 просмотра
Подписаться 1 Простой 2 комментария
Решения вопроса 2
oshliaer
@oshliaer Куратор тега Google Sheets
Google Products Expert
Не самое лучшее решение, но можно попробовать, если структура данных не будет часто меняться

5fc7b08683c51408160522.png

Собираем данные

5fc7b12029493261083554.png

Берем уникальные позиции

5fc7b134523bd474857090.png

Берем уникальные даты

5fc7b14611b07421562688.png

Строим нулевые записи со всеми возможными комбинациями

5fc7b163014e4192309262.png

Выбираем те, которых нет

5fc7b176c2d7f296501603.png

Пример https://docs.google.com/spreadsheets/d/1kZWMci2QUa...
Ответ написан
@Yaros75
Я бы сделал так :-)
={
IFERROR(query( '2020/01'!A1:F99; " SELECT * WHERE (Col1 = "&J1&")" );{ J1 \ 0 \ "2020/01" });
IFERROR(query( '2020/02'!A1:F99; " SELECT * WHERE (Col1 = "&J1&")" );{ J1 \ 0 \ "2020/02" });
IFERROR(query( '2020/03'!A1:F99; " SELECT * WHERE (Col1 = "&J1&")" );{ J1 \ 0 \ "2020/03" })
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
BasiC2k
@BasiC2k
.NET developer (open to job offers)
Рассмотрите вариант - создать список дат без пробелов другим способом (вручную, формулой или скриптом) и подтяните к датам нужные данные.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы