формула для расчета рабочего времени и сортировки по сотруднику в перекрывающемся массиве данных - PullRequest
1 голос
/ 14 июня 2019

У меня есть таблица .XLXS с именами рабочих, временем начала и окончания.Я хочу показать общее количество часов, отработанных работником, игнорируя перекрывающиеся периоды.Например, если «Боб» работает с 08:00 до 14:00, а также с 09:00 до 13:00, его общее время в этот день должно составлять 6 часов.Если «Джо» работает с 07:00 до 09:00, его время в этот день составляет 2 часа.

Число работников варьируется, и данные за шесть месяцев составляют около 2100 строк.

Формула, предоставленная "barry houdini" для " Формула, которая будет вычислять общее количество часов в перекрывающемся массиве дат ", работает на одного работника, но я не знаю достаточно об Excel, чтобы сделать ее сортировкудля нескольких работников.

=SUMPRODUCT((COUNTIFS(B:B,"<"&MIN(B:B)+ROW(INDIRECT("1:"&ROUND((MAX(C:C)-MIN(B:B))*1440,0)))/1440-1/2880,C:C,">"&MIN(B:B)+ROW(INDIRECT("1:"&ROUND((MAX(C:C)-MIN(B:B))*1440,0)))/1440-1/2880)>0)+0)/60


MOD_BY  START_DATETIME  END_DATETIME        total time  
bob     1/2/19 17:30    1/2/19 18:45        3.2500  
bob     1/2/19 21:00    1/2/19 21:15            
bob     1/2/19 21:00    1/2/19 22:00            
bob     1/2/19 15:00    1/2/2019 16:00          
joe     1/2/19 17:30    1/2/19 18:45            
joe     1/2/19 21:00    1/2/19 21:15            
joe     1/2/19 21:00    1/2/19 22:00            
joe     1/2/19 15:00    1/2/2019 16:00

Моя цель - получить общее количество отработанных часов работником.Приведенная формула дает итоговое значение для всего файла без разбивки по работникам.

1 Ответ

1 голос
/ 14 июня 2019

Вам понадобятся MAXIFS и MINIFS, что означает, что вам нужен Office 365 Excel:

=SUMPRODUCT(--(COUNTIFS(A:A,"bob",B:B,"<=" & MINIFS(B:B,A:A,"bob") + ROW($XFD$1:INDEX($XFD:$XFD,ROUND((MAXIFS(C:C,A:A,"bob")-MINIFS(B:B,A:A,"bob"))*1440,0)))/1440-1/2880,C:C,">=" & MINIFS(B:B,A:A,"bob") + ROW($XFD$1:INDEX($XFD:$XFD,ROUND((MAXIFS(C:C,A:A,"bob")-MINIFS(B:B,A:A,"bob"))*1440,0)))/1440-1/2880)>0))/60

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...