Re: Excel Как посчитать количество рабочих часов между двумя датами
Добавлено: 17 апр 2009, 18:56
Немного подправил, т.к. не учитывался вариант если в начальной или конечной дате было 0 часов и если между различными датами получалось либо нулевое либо отрицательное значение по формуле ЧИСТРАБДНИ(конец;начало-1)*8 получалось либо нулевое либо отрицательное значение). Соответственно:Diment писал(а):да уж вынужден признать, формула - дерьмо... подошел к вопросу легкомысленно
вот новая версия решения поставленной проблемы
сначала на листе 2 делаете табличку
Час Час_отр
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
10 1
11 2
12 3
13 4
14 4
15 5
16 6
17 7
18 8
19 8
20 8
21 8
22 8
23 8
А вот и сама формула
=ЕСЛИ(ДАТА(ГОД(Конец);МЕСЯЦ(Конец);ДЕНЬ(Конец))-ДАТА(ГОД(Начало);МЕСЯЦ(Начало);ДЕНЬ(Начало))=0;0;ЧИСТРАБДНИ(Начало;Конец-1)*8)+ВПР(ЧАС(Конец);Лист2!$a$1:$b$24;2;1)-ВПР(ЧАС(Начало);Лист2!$a$1:$b$24;2;1)
P.s. обращаю внимание, что погрешность +/- 1 час - т.к. не учитываются минуты.
таблицу с данным сделал на основании Вашего примера: рабочий день 9 - 18, перерыв в 13:00 - 1 час
на листе2 вставляем (выбрал вариант работы с 10:00 до 19:00 с перерывом на час)
Час Час_отр
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
10 0
11 1
12 2
13 3
14 3
15 4
16 5
17 6
18 7
19 8
20 8
21 8
22 8
23 8
а формула выглядит так: ЕСЛИ(ДАТА(ГОД(конец);МЕСЯЦ(конец);ДЕНЬ(конец))-ДАТА(ГОД(начало);МЕСЯЦ(начало);ДЕНЬ(начало))=0;(ВПР(ЧАС(конец);Лист2!$A$1:$B$25;2;1)-ВПР(ЧАС(начало);Лист2!$A$1:$B$25;2;1));((ЕСЛИ(ЧИСТРАБДНИ(начало;конец-1)*8>0;ЧИСТРАБДНИ(начало;конец-1)*8;8))+ВПР(ЧАС(конец);Лист2!$A$1:$B$25;2;1)-ВПР(ЧАС(начало);Лист2!$A$1:$B$25;2;1)))