SCAN
Сканирование.
Функция сканирует массив и выдает промежуточные значения, применяя к каждому из них функцию LAMBDA. Возвращает массив промежуточных значений, полученных на каждом шаге.
Работа с массивами / Array
На русском: команда не имеет эквивалента на русском языке.
SCAN(начальное_значение; массив_или_диапазон; LAMBDA)
На английском
SCAN(initial_value, array_or_range, LAMBDA)
Пояснения:
SCAN(начальное_значение, массив_или_диапазон, LAMBDA)
начальное_значение
– начальное значение в сумматоре.массив_или_диапазон
– массив или диапазон, который необходимо просканировать.LAMBDA
– лямбда-функция, которая применяется к каждому значению в массиве или диапазоне с целью сканирования.
LAMBDA(имя1, имя2, формула)
#N/A
. Эти аргументы относятся к сумматору и текущему значению в порядке следования. Что означает каждый аргумент:
имя1
– определяет значение в сумматоре.имя2
– определяет текущие значения во входном массиве.SCAN
должен использоваться синтаксис LAMBDA
, т. е. ей должно быть назначено два тега аргумента.SCAN(5, A1:A3, LAMBDA(сумматор, текущее_значение, сумматор+текущее_значение))
SCAN(2, A1:A3, LAMBDA(сумматор, текущее_значение, сумматор*текущее_значение))
Точная задача: вернуть промежуточную сумму массива
Иллюстрация использования функции SCAN в Google Таблицах. Промежуточная сумма массива.
Формула из примера в ячейке B2
:
= =SCAN(5; A2:A4; LAMBDA(сумматор; текущее_значение; сумматор+текущее_значение))+текущее_значение))
Иллюстрация использования функции SCAN в Google Таблицах. Cуммарный процент.
Формула из примера в ячейке B2
:
=SCAN(0; A2:A4; LAMBDA(сумматор; текущее_значение; сумматор + текущее_значение / СУММ (A2:A4)))
Точная задача: возврат промежуточной суммы массива и перезапуск расчета, когда число равняется 0, с использованием именованной функции в качестве лямбда-функции
Пример данных:
Пример формулы: =SCAN(0, A1:A6, RUNNING_TOTAL_0)
Именованная функция RUNNING_TOTAL_0
выводит промежуточную сумму массива и перезапускает расчет, когда текущее значение равняется 0.
Определение формулы: =if(текущее_значение=0, текущее_значение, сумматор+текущее_значение)
, где сумматор
и текущее_значение
– теги аргументов, назначенных функции RUNNING_TOTAL_0
.
Результат:
4
6
7
0
3
9
Переданная лямбда-функция не имеет ровно два аргумента "имя"
Если лямбда-функция не имеет ровно два аргумента "имя", возникает следующая ошибка:
"Неверное количество аргументов лямбда-функции: 2 вместо 3".
Пример: =SCAN(5, C1:C4, LAMBDA(текущее_значение, текущее_значение+1))
В этом примере для лямбда-функции задан только один аргумент "имя" при требуемых двух.
Последний параметр функции SCAN не является лямбда-функцией
Если последний параметр функции SCAN не является лямбда-функцией, возникает следующая ошибка:
"Аргумент должен быть лямбда-функцией"
Пример: =SCAN(5, C1:C4, 3)
В этом примере последней функцией является 3
, а не лямбда-функция.
Лямбда-функция, переданная функции SCAN, неверна
Если один или несколько аргументов "имя" недействительны, возникает следующая ошибка:
"Аргумент 1 лямбда-функции является недопустимым именем".
Пример: =SCAN(5, C1:C4, LAMBDA(C1, v, C1+v))
В этом примере С1
является недопустимым именем, поскольку конфликтует с диапазоном.
Одно или несколько промежуточных значений, полученных путем применения лямбда-функции, не являются одиночными значениями
Если при применении лямбда-функции к входному массиву образуются неодиночные промежуточные значения, возникает следующая ошибка:
"Необходимо указать одиночное значение. Результаты из вложенных массивов не поддерживаются."
Пример: =SCAN(5, C1:C4, LAMBDA(сумматор, значение, {сумматор, значение}))
При каждом применении лямбда-функции должно создаваться одиночное промежуточное значение, но не еще один массив.
MAP »
REDUCE » преобразует массив в накопленный результат.
Google Sheets function list (на английском)
Список функций Google Таблиц (на русском)
Простой текст
Работает на Creatium