Найти в Дзене

Проверяем, был ли у сотрудника хотя бы один 14-дневный отпуск

Проверяем, был ли у сотрудника хотя бы один 14-дневный отпуск Интересная задача от участницы практикума "Магия формул", мы решили вынести решение на всех вас :) Итак, в таблице с сотрудниками единицами отмечены дни отпуска. Надо понять, была ли у сотрудника приятная цепочка в 14 или более таких дней. Алгоритм такой: 1. Убираем заголовки с месяцами (чтобы остались только дни; нам не нужно считать итог месяца отдельным днем, его надо пропустить) через функцию FILTER. Можно исключать конкретное слово "<>итого" или оставлять только числа ISNUMBER(...) ) 2. Далее в полученном массиве идущих подряд дней с помощью SCAN считаем нарастающий итог — число идущих подряд единиц. Если есть единица, прибавляем к накопленному итогу ее, иначе обнуляем счетчик) 3. В результате получаем массив с накопленными днями отпусков — с помощью COUNTIF проверяем, есть ли там хоть одно число от 14 включительно. 4. Напоминаем вам, что логические значения TRUE и FALSE, если они выдаются формулами, можно показывать к

Проверяем, был ли у сотрудника хотя бы один 14-дневный отпуск

Интересная задача от участницы практикума "Магия формул", мы решили вынести решение на всех вас :)

Итак, в таблице с сотрудниками единицами отмечены дни отпуска. Надо понять, была ли у сотрудника приятная цепочка в 14 или более таких дней.

Алгоритм такой:

1. Убираем заголовки с месяцами (чтобы остались только дни; нам не нужно считать итог месяца отдельным днем, его надо пропустить) через функцию FILTER. Можно исключать конкретное слово "<>итого" или оставлять только числа ISNUMBER(...) )

2. Далее в полученном массиве идущих подряд дней с помощью SCAN считаем нарастающий итог — число идущих подряд единиц. Если есть единица, прибавляем к накопленному итогу ее, иначе обнуляем счетчик)

3. В результате получаем массив с накопленными днями отпусков — с помощью COUNTIF проверяем, есть ли там хоть одно число от 14 включительно.

4. Напоминаем вам, что логические значения TRUE и FALSE, если они выдаются формулами, можно показывать как флажки.

Вариант для одной строки (на скриншоте в строках с 9-й видно, что возвращает функция SCAN, то есть все, что внутри COUNTIF / СЧЁТЕСЛИ) — массив накопленных значений, в котором мы потом ищем числа от 14.

=COUNTIF(SCAN(0;FILTER(строка с днями сотрудника;строка заголовков<>"итого"); LAMBDA(acc;value;IF(value;acc+value;0)));">=14")<>0

Еще вариант — одной формулой все сотрудники:

=BYROW(SCAN(;IFNA(HSTACK(;FILTER(D3:NQ7;ISNUMBER(D2:NQ2))));LAMBDA(acc;z;IF(z="";;acc)+z));LAMBDA(zz;IF(MAX(zz)>13;TRUE;FALSE)))

Ссылка на таблицу с вариантами формул

Не забывайте отдыхать, друзья! И предлагайте свои варианты решения задачи🤠

📗 Канал и Чат

📕 Оглавление канала

🏄 Заказ работы у нас