Коллеги, добрый день! В этом видео мы обсудим обработку нескольких диапазонов с помощью функции Query. Она позволяет получать данные не только из одного диапазона текущего документа, но и из нескольких. Допустим, у нас есть отдельные отчёты по городам на разных листах, и мы хотим их обрабатывать, как будто это один массив. Это нельзя сделать другими инструментами, например, сводная таблица в Google SpreadSheets такой опции вообще не имеет. В Excel сводные по диапазонам строить можно — по нескольким одновременно, но функционал ограничен, так что это ещё один очевидный плюс Google-таблиц. Давайте поработаем с нашим примером, в котором есть три таблицы с разными городами с информацией по остаткам товаров на складе — это ноутбуки, смартфоны, разные категории товаров. У нас три таблицы, которые имеют одинаковую структуру: название номенклатуры, категория и остатки. Будем обрабатывать три таблицы так, как будто это одна, с помощью функции Query. Приступим. Как мы помним, первый аргумент функции Query — это диапазон с данными, и в данном случае нам нужно объединить три таблицы в одну прямо внутри функции. Это происходит с помощью фигурных скобок, которые позволяют виртуально объединить несколько массивов, несколько таблиц в один. Мы открываем фигурные скобки, ссылаемся на первую таблицу и через точку с запятой перечисляем две остальных. Обратите внимание, что структура таблиц у нас немного отличается: в каких-то три столбца, в каких-то четыре. Нам нужно выделять те столбцы, которые мы будем обрабатывать — это должны быть одни и те же, по сути, столбцы в каждой из таблиц, при этом не так страшно, что они стоят в разных столбцах листов, то есть ABC или BCD — это не столь принципиально, главное, одинаковая структура, одинаковые данные. Закроем фигурную скобку. Таким образом, мы объединили данные с трёх листов в один массив внутри Query и теперь можем к нему обращаться так же, как мы делали в обычном случае с одним диапазоном. Например, можем выделить только номенклатуру и остатки и убрать категорию. При этом, как вы понимаете, нельзя обратиться здесь напрямую с помощью номера столбца, потому что номенклатура на листе одного города стоит в столбце A, а на листе другого — в столбце B. Получается, что буквенные обозначения традиционно здесь не работают. В случаях, когда мы объединяем несколько массивов Query, нам нужно обращаться к столбцам по их номерам. Это выглядит следующим образом: сначала, как обычно, кляуза Select, определяющая выбор столбцов, и далее вместо букв мы используем обозначение Col — латиницей, обязательно с заглавной буквы (здесь функция требовательна к синтаксису, то есть большими или маленькими буквами работать не будет), и после этого — слитно номер столбца. Например, Col1 — это первый столбец полученного массива, Col3 — это третий столбец соответственно. Нажмём Enter — получим таблицу, в которой есть только первый и третий столбец из трёх разных листов. Конечно, мы здесь можем также добавлять условия, например, наложить условие на второй столбец — на категорию — и фильтровать только по ноутбукам. Таким образом, теперь будут выгружаться данные только по ноутбукам. Можно также и создавать своего рода сводные таблицы, группировать данные, агрегировать с помощью Query с трёх разных листов. Например, в данном случае мы можем не просто вывести три объединённых списка, как сейчас, но и сгруппировать остатки по названиям товаров, то есть получать сводную таблицу с суммой остатков каждого ноутбука в трёх разных городах — получить агрегированный результат. Соответственно, что мы сделаем? Мы в Select оставляем название товара, суммируем мы остатки из столбца «три» и группируем по столбцу «один», то есть по названию товара. Таким образом, мы теперь получили таблицу, в которой каждый ноутбук встречается один раз, указана сумма его остатков с трёх разных листов, и так как это — функция, то результат её вычисления будет обновляться автоматически. Как я уже отмечал в начале видео, обычную сводную таблицу по нескольким диапазонам в Google-таблицах нельзя сделать, это можно реализовать только с помощью функции Query и группировки с помощью кляузы Group by. Коллеги, давайте сравним все возможные варианты диапазонов функции Query. Обычный вариант — это один диапазон в рамках текущего документа, и в таком случае, напомню, мы ссылаемся в запросе на столбцы по их буквенным обозначениям: A, B, C и т.д. Когда мы получаем данные из другого документа, вместо обычного диапазона мы используем функцию Importrange, с которой уже знакомы. Она подтягивает данные с другого документа. Из двух и более диапазонов текущего документа мы объединяем их в фигурных скобках, как рассмотрели, в один массив и работаем с этим полученным массивом. Также можно сразу объединить данные из другого документа в виде функции Importrange и из текущего или из нескольких других документов. Так или иначе, если диапазонов несколько, мы объединяем их в фигурных скобках, и важно, чтобы в диапазонах была одинаковая структура — столбцы и их количество. Также напомню, что во всех случаях, когда это массив или это данные из другого документа, мы обращаемся к столбцам по их номерам: Col1, Col2, Col3 — вместо A, B, C.