Подскажите, пожалуйста, как в результате запроса QUERY получить именно пустые столбцы между заполненными?
Для примера, указываем диапазон А:С. В результате надо получить табличку, в которой 2-й столбец будет пустой. Данные из А попадут в А (другого листа), В будет пустой, данные из В попадут в С, из С - в D. Если в запросе указать select ' ', то получим столбец с каким-то количеством пробелов в каждой ячейке, но не пустой...
Заранее спасибо.
Добрый день!
Подскажите, пожалуйста, как в результате запроса QUERY получить именно пустые столбцы между заполненными?
Для примера, указываем диапазон А:С. В результате надо получить табличку, в которой 2-й столбец будет пустой. Данные из А попадут в А (другого листа), В будет пустой, данные из В попадут в С, из С - в D. Если в запросе указать select ' ', то получим столбец с каким-то количеством пробелов в каждой ячейке, но не пустой...
krosav4ig, Спасибо за ответ. Но... как это часто бывает... я не полностью дал информацию в вопросе... Прошу извинить... Речь идет о Гугл Таблицах. И если написать вот так
Код
=query(A:D; "select A, null as B, B, C")
то выдает ошибку #ЗНАЧ!
krosav4ig, Спасибо за ответ. Но... как это часто бывает... я не полностью дал информацию в вопросе... Прошу извинить... Речь идет о Гугл Таблицах. И если написать вот так
Повторю. Есть исходная таблица, в которой два (два - для примера - реально больше) столбца с данными: "Дата", "Сумма". Как написать запрос в функции QUERY, чтобы в итоговой таблице был пустой столбец без заголовка: "Дата", пустой столбец, "Сумма".
Может кто-нибудь предложить более изящное решение, чем то, которое указано мной же выше.
Спасибо!
Добрый день всем! Хотелось бы вернуться к теме.
Повторю. Есть исходная таблица, в которой два (два - для примера - реально больше) столбца с данными: "Дата", "Сумма". Как написать запрос в функции QUERY, чтобы в итоговой таблице был пустой столбец без заголовка: "Дата", пустой столбец, "Сумма".
Может кто-нибудь предложить более изящное решение, чем то, которое указано мной же выше.
В целом, поддерживая Ваше решение из сообщения #4, я бы сделал некую дополнительную манипуляцию - чтобы пустые столбцы не мешались в основной области данных.
Заготовьте "где-то сбоку" пустой диапазон, равный по размерам исходному НЕпустому диапазону. Например, удобно это сделать на другом (пустом) листе в тех же границах, т.е. с тем же адресом. Оба диапазона объедините в составной диапазон - в фигурных скобках через обратный слэш. А дальше в SELECT'е перемежайте столбцы первого и второго диапазона, что собственно Вы и делали:
[vba]
Код
=QUERY({'Лист1'!A1:C20 \'Лист2'!A1:C20};"select Col1, Col4, Col2, Col5, Col3, Col6 where Col1 is not null")
[/vba]
Либо, если не хочется резервировать дополнительный пустой диапазон, можно создать виртуальный массив пустых строк от исходного диапазона при помощи какой-нибудь подходящей функции:
[vba]
Код
=QUERY({'Лист1'!A1:C20 \ArrayFormula(IF(ISBLANK('Лист1'!A1:C20);"";""))};"select Col1, Col4, Col2, Col5, Col3, Col6 where Col1 is not null")
[/vba]
Вместо радикала: [vba]
Код
ArrayFormula(IF(ISBLANK('Лист1'!A1:C20);"";""))
[/vba] можно написать что-нибудь в том же духе, но покороче: [vba]
Код
ArrayFormula(T(--('Лист1'!A1:C20="")))
[/vba]
В целом, поддерживая Ваше решение из сообщения #4, я бы сделал некую дополнительную манипуляцию - чтобы пустые столбцы не мешались в основной области данных.
Заготовьте "где-то сбоку" пустой диапазон, равный по размерам исходному НЕпустому диапазону. Например, удобно это сделать на другом (пустом) листе в тех же границах, т.е. с тем же адресом. Оба диапазона объедините в составной диапазон - в фигурных скобках через обратный слэш. А дальше в SELECT'е перемежайте столбцы первого и второго диапазона, что собственно Вы и делали:
[vba]
Код
=QUERY({'Лист1'!A1:C20 \'Лист2'!A1:C20};"select Col1, Col4, Col2, Col5, Col3, Col6 where Col1 is not null")
[/vba]
Либо, если не хочется резервировать дополнительный пустой диапазон, можно создать виртуальный массив пустых строк от исходного диапазона при помощи какой-нибудь подходящей функции:
[vba]
Код
=QUERY({'Лист1'!A1:C20 \ArrayFormula(IF(ISBLANK('Лист1'!A1:C20);"";""))};"select Col1, Col4, Col2, Col5, Col3, Col6 where Col1 is not null")
[/vba]
Вместо радикала: [vba]
Код
ArrayFormula(IF(ISBLANK('Лист1'!A1:C20);"";""))
[/vba] можно написать что-нибудь в том же духе, но покороче: [vba]
А сработает ли такая штука? Дело в том, что "исходная" таблица находятся в другом файле, она постоянно дополняется. Поэтому я использую комбинацию двух функций
и задаю диапазон вниз на весь лист A3:Y. А Вы предлагаете его увеличить в два раза...
Возможно, надо использовать динамический именованный диапазон для исходных данных? Или и вовсе менять всю логику взаимосвязи между файлами и таблицами? Дорабатывал под новые задачи уже ранее созданные таблицы и не было времени продумать, как сделать лучше... но это уже тема совсем другого разговора...
PS И спасибо за новые предложения с формулами - будет что изучить.
А сработает ли такая штука? Дело в том, что "исходная" таблица находятся в другом файле, она постоянно дополняется. Поэтому я использую комбинацию двух функций
и задаю диапазон вниз на весь лист A3:Y. А Вы предлагаете его увеличить в два раза...
Возможно, надо использовать динамический именованный диапазон для исходных данных? Или и вовсе менять всю логику взаимосвязи между файлами и таблицами? Дорабатывал под новые задачи уже ранее созданные таблицы и не было времени продумать, как сделать лучше... но это уже тема совсем другого разговора...
PS И спасибо за новые предложения с формулами - будет что изучить.book
-- С уважением, Андрей.
Сообщение отредактировал book - Понедельник, 24.06.2019, 20:50
=QUERY({IMPORTRANGE("...другой файл...";"Лист1!A1:C20") \ArrayFormula(T(--(IMPORTRANGE("...другой файл...";"Лист1!A1:C20")="")))};"select Col1, Col4, Col2, Col5, Col3, Col6 where Col1 is not null")
и задаю диапазон вниз на весь лист A3:Y. А Вы предлагаете его увеличить в два раза...
И что? Я бы, может быть, поёжился, если бы Вы задали A3:YY (т.е. еще 26 раз по 26 колонок), а лишь в два-то раза - по-моему, ни о чём. Есть единый неделимый предел - максимум 5 млн. ячеек в одном файле. Всё, что меньше - пожалуйста.
=QUERY({IMPORTRANGE("...другой файл...";"Лист1!A1:C20") \ArrayFormula(T(--(IMPORTRANGE("...другой файл...";"Лист1!A1:C20")="")))};"select Col1, Col4, Col2, Col5, Col3, Col6 where Col1 is not null")
и задаю диапазон вниз на весь лист A3:Y. А Вы предлагаете его увеличить в два раза...
И что? Я бы, может быть, поёжился, если бы Вы задали A3:YY (т.е. еще 26 раз по 26 колонок), а лишь в два-то раза - по-моему, ни о чём. Есть единый неделимый предел - максимум 5 млн. ячеек в одном файле. Всё, что меньше - пожалуйста.Gustav