Функции MAP, BYROW, BYCOL и SCAN в Google Таблицах

Обсудить
Функции MAP, BYROW, BYCOL и SCAN в Google Таблицах
Реклама. АО «ТаймВэб». erid: 2W5zFJszs6q

Функция LAMBDA открыла в Google Таблицах возможность создавать собственные вычислительные блоки прямо в ячейке, без кода и скриптов. Если вы еще не знакомы с ней, советую сначала прочитать отдельную статью о LAMBDA на нашем сайте – она станет хорошей отправной точкой, поскольку все четыре функции из этого материала работают именно на ее основе.

Читайте также в Комьюнити: Использование функции LAMBDA в Google Таблицах

Предварительное ознакомление с функцией LAMBDA в Google Таблицах

MAP, BYROW, BYCOL и SCAN появились в Google Таблицах в 2022-2023 году как вспомогательные инструменты семейства LAMBDA. Задача у них общая: применить заданную логику к массиву данных, не заставляя пользователя писать формулу для каждой строки или столбца отдельно. При этом каждая функция делает это по-своему: MAP работает с отдельными элементами, BYROW и BYCOL – со строками и столбцами целиком, а SCAN накапливает результат по мере обхода массива. Ниже на конкретных примерах разберем, как и когда применять каждую из них.

Таблица для примеров

Все примеры в статье построены на одной таблице с данными о продажах пяти менеджеров. Вы можете воссоздать ее у себя или сразу применять приведенные формулы к собственным диапазонам – важно лишь подставить нужные ссылки на ячейки.

Таблица для примеров использования функций MAP, BYROW, BYCOL и SCAN в Google Таблицах

Заголовки расположены в строке 1, данные – в строках 2-6. Имена менеджеров занимают столбец A, продажи по месяцам – столбцы B, C и D, процент выполнения плана – столбец E.

Такая структура удобна для демонстрации сразу нескольких подходов. Три столбца с числами по месяцам дают возможность показать, как работают функции, обходящие данные по строкам и по столбцам. Отдельный столбец с процентами пригодится для поэлементных преобразований. А числа в столбце «Январь», выстроенные в один вертикальный ряд, наглядно покажут, как SCAN накапливает результат шаг за шагом.

Пример 1: Функция MAP

MAP применяет заданную формулу к каждому элементу массива и возвращает новый массив той же формы. Проще всего представить ее как конвейер: данные заходят с одной стороны, на каждый элемент применяется одна и та же операция, и с другой стороны выходит обработанный массив.

Синтаксис функции:

=MAP(массив1; [массив2; ...]; LAMBDA(имя1; [имя2; ...]; формула)) 

Если передается один массив, LAMBDA принимает один параметр. Если два – два параметра, и формула применяется к соответствующим элементам обоих массивов одновременно.

Допустим, руководителю неудобно смотреть на голые проценты и он хочет видеть рядом с каждым менеджером текстовый статус: «Перевыполнен», «Выполнен» или «Не выполнен». Значения уже есть в столбце E, и MAP пройдет по каждому из них, вынесет вердикт и вернет столбец с готовыми подписями.

=MAP(массив1; [массив2; ...]; LAMBDA(имя1; [имя2; ...]; формула))

Первый пример использования фунции MAP в Google Таблицах

MAP пройдет по каждой ячейке диапазона E2:E6, передаст ее значение в параметр п и вернет соответствующий текст. Ту же задачу можно решить через ARRAYFORMULA с ЕСЛИ, но MAP делает логику нагляднее: видно, что формула работает с одним элементом п, и проще отслеживать вложенные условия. 

Если передать два массива, MAP будет обрабатывать соответствующие пары элементов. Допустим, в столбец G добавлены индивидуальные коэффициенты бонуса для каждого менеджера: 1.05, 1.10, 1.00, 1.15, 1.08. Тогда скорректированные продажи за январь с учетом бонуса считаются так: 

=MAP(B2:B6; G2:G6; LAMBDA(продажи; коэф; продажи*коэф)) 

Второй пример использования функции MAP в Google Таблицах

Формула возьмет B2 и G2, затем B3 и G3 – и так по каждой паре, вернув столбец с результатами. 

Пример 2: Функция BYROW

BYROW применяет формулу к каждой строке диапазона и возвращает один столбец результатов. Если MAP обрабатывает отдельные ячейки, то BYROW работает сразу со всей строкой как с единицей данных. Параметр внутри LAMBDA – это не одно значение, а одностроковый диапазон, поэтому к нему можно применять агрегатные функции: СУММ, МАКС, МИН, СРЗНАЧ и другие.

Синтаксис функции: 

=BYROW(массив; LAMBDA(строка; формула)) 

Предположим, нужно добавить к таблице столбец с суммарными продажами каждого менеджера за квартал. Стандартный подход – написать =СУММ(B2:D2) в одну ячейку и протянуть формулу вниз на пять строк. BYROW делает то же самое одной формулой без протягивания.

Введите формулу в ячейку F2 – она автоматически заполнит весь столбец вниз на пять строк:

=BYROW(B2:D6; LAMBDA(строка; СУММ(строка))) 

Пример использования функции BYROW в Google Таблицах

BYROW пройдет по каждой из пяти строк диапазона B2:D6 и применит СУММ к каждой. Формула занимает одну ячейку, а результат расширяется вниз ровно на столько строк, сколько было в исходном диапазоне. Заменив СУММ на МАКС, можно так же быстро найти лучший месяц по каждому менеджеру. 

Пример 3: Функция BYCOL

BYCOL работает симметрично BYROW, только в другом направлении: она применяет формулу к каждому столбцу диапазона и возвращает одну строку результатов. Параметр внутри LAMBDA – это весь столбец диапазона как одномерный массив.

Синтаксис функции:

=BYCOL(массив; LAMBDA(столбец; формула)) 

Разница между BYROW и BYCOL сводится к направлению обхода: первая идет по строкам и возвращает столбец, вторая идет по столбцам и возвращает строку. Если нужно получить итоговую строку в нижней части таблицы, BYCOL – правильный выбор.

Одна из типичных задач – итоговая строка под данными. Допустим, нужно посмотреть, как в среднем продавала команда в каждый из трех месяцев, и добавить эти значения прямо под таблицей.

Введите формулу в ячейку B7 – она автоматически займет три соседних ячейки по горизонтали:

=BYCOL(B2:D6; LAMBDA(столбец; СРЗНАЧ(столбец))) 

Первый пример использования функции BYCOL в Google Таблицах

В ячейках B7, C7 и D7 появятся средние значения за январь, февраль и март соответственно. Заменив СРЗНАЧ на МАКС, получите рекорд по каждому месяцу: конкретно в рассматриваемом примере в январе лидирует Григорий Козлов с 250 000, в феврале – с 280 000, в марте – с 310 000. 

Пример использования функции BYCOL в Google Таблицах

Пример 4: Функция SCAN

SCAN отличается от трех предыдущих: она не просто применяет формулу к каждому элементу независимо, а накапливает результат по мере обхода массива. На каждом шаге доступно и текущее значение, и то, что накопилось до этого момента. Именно это делает SCAN незаменимой для расчетов нарастающим итогом.

Синтаксис функции:

=SCAN(начальное_значение; массив; LAMBDA(накоп; элемент; формула)) 

начальное_значение – с чего начинается накопление (обычно 0 для суммы). накоп – текущий накопленный результат, элемент – очередной элемент массива, который функция обрабатывает на этом шаге.

Предположим, руководителю важно видеть не только итог по команде, но и то, как складывается общий объем продаж по мере добавления каждого менеджера в список. Именно для таких расчетов нарастающим итогом SCAN подходит лучше всего – каждая строка результата учитывает все предыдущие.

=SCAN(0; B2:B6; LAMBDA(накоп; x; накоп+x)) 

Пример использования функции SCAN в Google Таблицах

Результат появится в пяти ячейках: первая покажет Каждое следующее значение включает в себя все предыдущие. Начальное значение 0 означает, что накопление начинается с нуля, поэтому первый элемент сразу становится первым результатом. 

Заключение

Все четыре функции – MAP, BYROW, BYCOL и SCAN – работают по одному принципу: вы описываете, что нужно сделать с одним элементом, строкой или столбцом, а Google Таблицы самостоятельно применяют это ко всему диапазону. Это делает формулы короче, логику прозрачнее, а таблицы – проще для понимания другими людьми. Большинство задач, которые раньше требовали ARRAYFORMULA, вспомогательных столбцов или Apps Script, теперь решаются в одну строку.

Наши постоянные авторы и читатели делятся лайфхаками, основанными на личном опыте. Полная свобода самовыражения.

Комментарии

С помощью соцсетей
У меня нет аккаунта Зарегистрироваться
С помощью соцсетей
У меня уже есть аккаунт Войти
Инструкции по восстановлению пароля высланы на Ваш адрес электронной почты.
Пожалуйста, укажите email вашего аккаунта
Ваш баланс 10 ТК
1 ТК = 1 ₽
О том, как заработать и потратить Таймкарму, читайте в этой статье
Чтобы потратить Таймкарму, зарегистрируйтесь на нашем сайте