Допустим, мы неспешно собираем какие-нибудь данные в таблицу. Например, от каждого жильца дома принимаем и записываем показания какого-нибудь прибора за прошедший месяц:
Поскольку в схеме замешаны люди, данные поступают крайне неравномерно: кто-то забыл, кто-то в отъезде и так далее. Неплохо бы знать, сколько ещё осталось незаполненных ячеек, чтобы, блин, поскорее добить эту чёртову таблицу и до следующего месяца забыть о её существовании.
На помощь приходит ARRAYFORMULA()
, которая позволит нам сделать подсчёт одной формулой, без необходимости уродовать таблицу лишней колонкой:
Итак, готовая формула выглядит так:
=CONCATENATE("Ещё ", SUM(ARRAYFORMULA(IF(ISBLANK(C3:C7), 1, 0))))
Нужны пояснения? Их есть у меня. Разбираем изнутри:
ISBLANK(<cell>)
— возвращаетTRUE
, если ячейка пуста, иначеFALSE
.IF(…, 1, 0))
— если выражениеTRUE
, возвращает 1, иначе 0. В нашем случае будет 1 если ячейка пуста.ARRAYFORMULA(FUNC(<cell>))
— позволяет вместо<cell>
указать диапазон. Возвращает массив. В нашем случае это будет массив из 5 элементовC3:C7
, каждый из которых 0 или 1.SUM(<array>)
— суммирует.CONCATENATE("Ещё ", …)
— делает текст в информационной ячейке человечнее, что-ли… Лично меня «Ещё 2» будет подбадривать, а безликое «2» — отвлекать.
Вроде всё.
Ах, да, откуда в списке Берия? Да просто перечисление фамилий «Иванов, Петров, Берия!» — нечто вроде мема в узком кругу ограниченных людей, помнящих одноимённую репризу из КВН начала 2000-х.
Дополнение:
Парой месяцев позже попалась мне на глаза функция COUNTBLANK()
, которая считает количество пустых ячеек. Так что более простой путь к заветному «Ещё 2» может быть и таким:
=CONCATENATE("Ещё ", COUNTBLANK(C3:C7))
Текст выше всё равно оставляю, потому что он вполне удачно демонстрирует полезность ARRAYFORMULA()
как универсального средства.