РазделыНовостиПоследние новости → Подсчёт чистого времени работы

Задача.
Имеется небольшое предприятие. Учетчика нет.
Ведется учет времени на предприятии самими работниками.
Каждый работник пишет, что он делал, например: пилил доски, 300 шт. с 8-30 до 15-00. При этом на предприятии регламентированы перерывы.
Его работа попала в следующие перерывы
Код:

Начало  Конец

9
:45    10:00
12
:00    12:30 (обед)
14:15    14:30
Мы напишем формулу для Гугл таблиц, которую можно будет применить и посчитать чистое время работы, за вычетом перерывов
Сделаем именованную функцию в Гугл таблицах:
Данные - Именованные функции - Добавить функцию
Данные - Именованные функции - Добавить функцию
Назовём функцию РАБОТЫ_БЕЗ_ПЕРЕРЫВОВ
Заполняем:
Заполненная вкладка именованной функции
Ввёдём 2 переменные - "работы" и "перерывы". Обе будут массивы строк с началом и концом периода времени. Например, массив перерывов
Код:

9:45    10:00

12
:00    12:30
14
:15    14:30
16
:30    17:00
18
:35    18:45
18
:45    19:00
Аналогичный массив будет создан для работ, только для каждого работника он будет разный.

Формула для подсчёта будет такая.
Код:

=BYROW(работыLAMBDA(_ef;

СУММ(BYROW(перерывы;LAMBDA(_mn;
ЕСЛИ(И(ИНДЕКС(_ef;1;1)<=ИНДЕКС(_mn;1;1);ИНДЕКС(_ef;1;2)>=ИНДЕКС(_mn;1;2));ИНДЕКС(_mn;1;2)-ИНДЕКС(_mn;1;1);
ЕСЛИ(И(ИНДЕКС(_ef;1;1)<ИНДЕКС(_mn;1;1);ИНДЕКС(_ef;1;2)<ИНДЕКС(_mn;1;2);ИНДЕКС(_ef;1;2)>ИНДЕКС(_mn;1;1));ИНДЕКС(_ef;1;2)-ИНДЕКС(_mn;1;1);
ЕСЛИ(И(ИНДЕКС(_ef;1;1)>ИНДЕКС(_mn;1;1);ИНДЕКС(_ef;1;1)<ИНДЕКС(_mn;1;2);ИНДЕКС(_ef;1;2)>ИНДЕКС(_mn;1;2));ИНДЕКС(_mn;1;2)-ИНДЕКС(_ef;1;1);
ЕСЛИ(И(ИНДЕКС(_ef;1;1)>=ИНДЕКС(_mn;1;1);ИНДЕКС(_ef;1;2)<=ИНДЕКС(_mn;1;2));ИНДЕКС(_ef;1;2)-ИНДЕКС(_ef;1;1);
0)))))))))
Осталось заполнить описание к функции:
Цитата:
Вводим два массива данных по 2 столбца. Первый массив (работы) содержит время начала и окончания работ, второй (перерывы) - время начала и окончания перерывов. Функция пробегает по всем строкам работ, ищет наложения из перерывов и подсчитывает время работы без перерыва по каждой строке.
Ну и результат применения функции
Код:

=РАБОТЫ_БЕЗ_ПЕРЕРЫВОВ(A2:B33;I2:J7)

в ячейке D2 выведет подсчитанные значения времени работ в ячейках D2:D
Конечный результат применения функции РАБОТЫ_БЕЗ_ПЕРЕРЫВОВ
23.01.2025 17:03 Автор/источник: Den1xxx

Комментировать

Вы не залогинены! Регистрация

Устал читать? Напиши! Или позвони +375 29 5344286. На связи по будним дням с 800 до 1700.