Магия таблиц. 100+ приемов ускорения работы в Excel (и немного в Google Таблицах) - Ренат Шагабутдинов
=ФИЛЬТР(Данные;Данные[Дата операции]>=ДАТАЗНАЧ("01.05.2021″))
Если в ФИЛЬТРе нужно выполнение нескольких условий одновременно (И), то перечисляем их со знаком умножения (*) и каждое берем в скобки.
Следующее условие — это фильтрация строк с Санкт-Петербургом в столбце F и B2B в столбце B.
(A1:A100="Санкт-Петербург") * (B1:B100="B2B")
Если хотя бы одного из (ИЛИ), то с плюсом (+). Следующее условие — или Санкт-Петербург, или Москва в столбце A:
(A1:A100= "Санкт-Петербург") + (A1:A100="Москва")
Функцию ФИЛЬТР можно совместить с СОРТ, если нужно и фильтровать, и сортировать данные. В следующей формуле (переносы строк — для наглядности, их можно использовать и в строке формул для лучшей читаемости) мы фильтруем данные по дате, а затем сортируем по пятому столбцу по возрастанию:
=СОРТ(ФИЛЬТР(Данные;Данные[Дата операции]>=ДАТАЗНАЧ("01.05.2021″));5;1)
Добавляем заголовки к результату фильтрации
Обратите внимание, что ФИЛЬТР автоматически не вставляет заголовки сверху над данными. Их можно заранее вставить вручную в верхнюю строку, под которой будет функция ФИЛЬТР, либо использовать функцию ВСТОЛБИК / VSTACK, о которой мы писали выше (если у вас Microsoft 365):
=ВСТОЛБИК(Заголовки];ФИЛЬТР(…))
В Google Таблицах можно объединить массивы с помощью фигурных скобок:
={Ссылка на заголовки; FILTER(…) }
Точка с запятой (в российских региональных настройках) в Google Таблицах — это вертикальное объединение массивов, а обратная косая черта — горизонтальное.
Другие функции для работы с массивами, появившиеся в 2022 году
Файл с примерами: ВЗЯТЬ и другие функции для работы с массивами.xlsx
Помимо VSTACK и HSTACK, в 2022 году в Excel (и Google Таблицах тоже) появились и другие функции для обработки массивов.
Функции TAKE / ВЗЯТЬ и СБРОСИТЬ / DROP
Функция ВЗЯТЬ / TAKE извлекает заданное количество столбцов или строк из массива:
=ВЗЯТЬ(массив;; сколько строк получить; [сколько столбцов получить])
В частном случае можно вытаскивать не только строки или столбцы, но и значения (если на входе задан одномерный массив).
Например, если нам нужны первые 10 значений в столбце таблицы, будет такая формула (в общем виде):
=ВЗЯТЬ(Таблица[Столбец]; 10)
А если нужны последние, а не первые? Прелесть в том, что функция умеет и так — просто укажите отрицательное количество строк в ее аргументе:
=ВЗЯТЬ(Таблица[Столбец]; -10)
Если нужна сумма последних 10, то добавим сверху функцию СУММ / SUM: =СУММ(ВЗЯТЬ(Таблица[Столбец]; -10))
Теперь формула всегда будет возвращать сумму значений из 10 последних строк таблицы из выбранного столбца, даже когда будут добавляться новые строки.
СБРОСИТЬ убирает из массива заданное число строк и столбцов из начала (положительный аргумент) или конца (отрицательный):
=СБРОСИТЬ(массив; сколько строк убрать; [сколько столбцов убрать])
Например, если мы хотим сумму без первых трех (по порядку) значений:
=СУММ(СБРОСИТЬ(Сделки[Сумма];3))
Функции TOROW / ПОСТРОК и TOCOL / ПОСТОЛБЦ
Эти функции делают массив плоским — в одну строку или в один столбец соответственно. Можно превратить несколько столбцов в один вертикальный или горизонтальный список.
А дальше можно обрабатывать этот список: например, получить список уникальных значений, без повторов — с помощью функции УНИК / UNIQUE:
=УНИК(ПОСТОЛБЦ(диапазон))
И таким образом мы получим список спикеров (без повторов), хотя изначально это три отдельных столбца, и к ним функцию УНИК применять для решения этой задачи было бесполезно (возвращались бы уникальные строки, а не значения).
WRAPROWS / СВЕРНСТРОК и WRAPCOLS / СВЕРНСТОЛБЦ
Эти функции делают обратную операцию — превращают плоский массив в двумерный. Бывает полезно, чтобы исправить какую-нибудь выгрузку в виде списка и получить ее в табличном виде.
Первый аргумент этих функций — собственно массив (список), а второй (он называется wrap_count) — сколько строк или столбцов нужно получить на выходе:
=СВЕРНСТОЛБЦ(массив; число строк)
В следующем примере мы превращаем список (те же данные, что и в предыдущем примере), в котором каждые 4 строки — это время и три фамилии, в таблицы. В случае со СВЕРНСТОЛБЦ в ней будет 4 строки, в случае со СВЕРНСТРОК — 4 столбца. Второй аргумент обеих функций — 4 (это цикличность наших данных).
CHOOSEROWS / ВЫБОРСТРОК и CHOOSECOLS / ВЫБОРСТОЛБЦ
Эти функции извлекают заданные (по номерам) строки или столбцы из массива. То есть можно извлечь, например, первый и седьмой столбец. Или извлечь весь массив, поменяв порядок столбцов:
=ВЫБОРСТРОК(массив; номер первой извлекаемой строки; номер второй; …)
Давайте извлечем первую и последнюю строку из таблицы. Первая — это первая, вторым аргументом функции ВЫБОРСТРОК можно задать единицу. А чтобы получать номер последней на данный момент строки, можно посчитать число значений с помощью функции СЧЁТЗ / COUNTA:
=ВЫБОРСТРОК(Название таблицы;1;СЧЁТЗ(Столбец из таблицы для подсчета значений))
EXPAND / РАЗВЕРНУТЬ
Эта функция увеличивает массив, добавляя к исходному массиву (диапазону) какое-то заданное значение:
=РАЗВЕРНУТЬ (исходный массив, число строк в новом массиве, число столбцов, чем заполнить)
Если последний аргумент не задать, то новые значения будут ошибками #H/Д (#N/A).
В следующем примере мы также делаем новый массив размерами 3 × 3 (то есть добавляем к исходному из диапазона A1:B2 одну строку и один столбец), но новые значения задаем как нули.
Функция ПОСЛЕД / SEQUENCE
Файл с примерами: ПОСЛЕД.xlsx
Функция ПОСЛЕД / SEQUENCE появилась вместе с динамическими массивами в Excel 2021 и Microsoft 365, то есть отсутствует во всех «коробочных» версиях Excel вплоть до 2019.
Но она есть в Google Таблицах, там эта функция при любом языке формул называется SEQUENCE.
Эта функция возвращает массив из чисел, заданный следующими параметрами — ее аргументами:
• строки (rows);
• столбцы (columns);
• начало (start);
• шаг (step).
Например, такая функция выведет столбец с числами от 1 до 1000:
=ПОСЛЕД(1000;1;1;1)
А такая — диапазон размеров 3 × 3 с числами от 10 до 100:
=ПОСЛЕД(3;3;10;10)
Так как даты в Excel и Google Таблицах — это числа (одна единица = 1 календарный день), то можно выводить и их. Вот несколько примеров.
Все даты за заданный период
Если есть две ячейки, в которых указаны даты начала и окончания периода, то с помощью ПОСЛЕД можно