Страницы: Пред. 1 2
RSS
Разница в минутах между датами без учета определенных условий
 
_Boroda_, Хе Хе , этого в ТЗ не было :-), признаю, что думал об этом, но вопрос не поднимал, вроде они должны попадать в список.

Цитата
adike написал:
в Первом "ЕСЛИ" день минус этот же день равно 1. от него отнимают двойку, в результате получается отрицательное число. и вот это логическое выражение при отрицательном значении подставляет ноль.
нет причина не в этом, то что вы написали - это относится к расчету для целых дней между двумя датами, за минусом крайних. По ним идет дальнейший расчет.

Цитата
andronus написал:
А модифицировать формулу можно?
она не работает со второй половинкой дня, черт почему сделал для первой и не сделал не проверил для второй - не понимаю. Проверьте ,поставьте время до обеда. Щас подправлю.

Посмотрел  - Копи пэст подвел.

=24*60*(IF(NETWORKDAYS(A2;B2;праздники!$A$1:$A$59)-2<0;0;NETWORKDAYS(A2;B2;праздники!$A$1:$A$59)-1- NETWORKDAYS(B2;B2;праздники!$A$1:$A$59))/3+
NETWORKDAYS(A2;A2;праздники!$A$1:$A$59)*(MAX(MIN("13:00";IF(INT(A2)=INT(B2);MOD(B2;1);"24:00"))-MAX(MOD(A2;1);"09:00");0)+MAX(MIN("18:00";IF(INT(A2)=INT(B2);MOD(B2;1);"24:00"))-MAX(MOD(A2;1);"14:00");0))+
IF(INT(A2)=INT(B2);0;NETWORKDAYS(B2;B2;праздники!$A$1:$A$59)*(MAX(MIN("13:00";MOD(B2;1))-"09:00";0)+MAX(MIN("18:00";MOD(B2;1))-"14:00";0))))
Изменено: БМВ - 12.09.2018 16:21:42
По вопросам из тем форума, личку не читаю.
 
БМВ,это просто прекрасно. Спасибо, вы очень помогли!
 
Цитата
БМВ написал:
Copy of Пример207.xlsx  (12.71 КБ)
Здравствуйте! Нашел ошибку в вычислениях в файле.

Верно: если в A и B вбить 25.05.2020 09:00:00 (понедельник) и 29.05.2020 18:00:00 (пятница) соответственно, то результат в C равен 2400. Это верно, т.к. все эти числа являются рабочими днями: 5 × 8 × 60 (рабочие дни × 8 рабочих часов × минут в часе) = 2400.
Неверно: если в A и B вбить 24.05.2020 09:00:00 (воскресенье) и 29.05.2020 18:00:00 (пятница), то результат в C не соответствует действительности: он не то чтобы не остается неизменным (а должен, ведь воскресенье это нерабочий день), так он еще и уменьшается, и становится равным 1920.
Верно: если в A и B вбить 24.05.2020 09:00:00 (воскресенье) и 25.05.2020 09:00:00 (понедельник), то результат в C равен 480. Это верно, т.к. учитывается лишь один рабочий день: 1 × 8 × 60 = 480.
Неверно: если в A и B вбить 24.05.2020 09:00:00 (воскресенье) и 26.05.2020 09:00:00 (вторник), то результат в C не соответствует действительности, т.к. он должен увеличиться из-за наличия двух рабочих дней: 2 × 8 × 60 = 960.

Как исправить - неясно. Кто-то может пояснить, почему так происходит?

Дополнительно прикладываю файл, где вбиты все 4 описанных варианта и добавлены верные значения (как должно быть) в столбец D:
Изменено: andronus - 14.05.2020 14:54:47
 
Даже стыдно, такой промах был
=24*60*(IF(NETWORKDAYS(A2;B2;праздники!$A$1:$A$59)-2<0;0;NETWORKDAYS(A2;B2;праздники!$A$1:$A$59)-NETWORKDAYS(A2;A2;праздники!$A$1:$A$59)- NETWORKDAYS(B2;B2;праздники!$A$1:$A$59))/3+
NETWORKDAYS(A2;A2;праздники!$A$1:$A$59)*(MAX(MIN("13:00";IF(INT(A2)=INT(B2);MOD(B2;1);"24:00"))-MAX(MOD(A2;1);"09:00");0)+MAX(MIN("18:00";IF(INT(A2)=INT(B2);MOD(B2;1);"24:00"))-MAX(MOD(A2;1);"14:00");0))+
IF(INT(A2)=INT(B2);0;NETWORKDAYS(B2;B2;праздники!$A$1:$A$59)*(MAX(MIN("13:00";MOD(B2;1))-"09:00";0)+MAX(MIN("18:00";MOD(B2;1))-"14:00";0))))


Но проверить думаю стоит
Изменено: БМВ - 14.05.2020 19:51:42
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал: Даже стыдно
Да не верю! Где картинка с красными медвежьими ушами?
 
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
Даже стыдно, такой промах был
...
Но проверить думаю стоит
Не нужно стыдиться, мы все ошибаемся. Огромное спасибо! Проверил, работает. Надеюсь, спустя какое-то время не вылезет что-то еще :) Это не упрёк ни в коем случае, а наоборот - уверенность в том, что всё будет в порядке.
 
еще вариант
Код
=СУММ(ТЕКСТ(ЧИСТРАБДНИ(ВЫБОР({1;2;3};A2;B2;A2+1);ВЫБОР({1;2;3};A2;B2;B2-1);праздники!$A$1:$A$59);"[>0]0;\0")*ВЫБОР({1;2;3};ОСТАТ(МИН(ОТБР(A2)+18/24;B2)-МАКС(9/24;ОСТАТ(A2;1))-1/24*(ОСТАТ(A2;1)<13/24);1);(МИН(18/24;ОСТАТ(B2;1))-9/24-1/24*(ОСТАТ(B2;1)>13/24))*(ОТБР(B2)>ОТБР(A2));8/24))*1440
Изменено: Андрей Лящук - 15.05.2020 15:55:31
 
Андрей Лящук, спасибо. Смотрю, ваша формула короче.
 
25.05.2020 09:00:00 29.05.2020 18:00:00
меняем на
25.05.2020 10:00:00 29.05.2020 17:00:00
два час меньше то есть 2400- 120 = 2280
короткий вариант это тоже укорачивает до 2100 :-)

25.05.2020 10:00:00 25.05.2020 17:00:00 то есть 6 часов
по короткому варианту 720 мин

идея с CHOOSE ОК, но результат пока ошибочен и сильно. А вот с TEXT нужно осторожно. Из за разных региональных настроек может быть иной разделитель и вместо ; может потребоватся ,
но в данном случае это проще заменить на MAX(0;...)
=24*60*(MAX(;SUM(NETWORKDAYS(CHOOSE({1;2;3};A2;A2;B2);CHOOSE({1;2;3};B2;A2;B2);праздники!$A$1:$A$59)*{1;-1;-1}))/3+
NETWORKDAYS(A2;A2;праздники!$A$1:$A$59)*(MAX(MIN("13:00";IF(INT(A2)=INT(B2);MOD(B2;1);"24:00"))-MAX(MOD(A2;1);"09:00");0)+MAX(MIN("18:00";IF(INT(A2)=INT(B2);MOD(B2;1);"24:00"))-MAX(MOD(A2;1);"14:00");0))+
IF(INT(A2)=INT(B2);0;NETWORKDAYS(B2;B2;праздники!$A$1:$A$59)*(MAX(MIN("13:00";MOD(B2;1))-"09:00";0)+MAX(MIN("18:00";MOD(B2;1))-"14:00";0))))


Если удастся оптимизировать и без ошибок  вторую часть то только буду рад
Изменено: БМВ - 15.05.2020 18:51:03
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
результат пока ошибочен и сильно.
Эт все потому, что формула массивная (забыл об этом написать), а в файле не уследил, выложил с немассивным вводом в С2
Избежать возможной ошибки при использовании ТЕКСТ() можно как-то так (немассивная формула)
Код
=СУММПРОИЗВ(ЧИСТРАБДНИ(ВЫБОР({1;2;3};A2;B2;A2+1);ВЫБОР({1;2;3};A2;B2;B2-1);праздники!$A$1:$A$59);ВЫБОР({1;2;3};ОСТАТ(МИН(ОТБР(A2)+18/24;B2)-МАКС(9/24;ОСТАТ(A2;1))-1/24*(ОСТАТ(A2;1)<13/24);1);(МИН(18/24;ОСТАТ(B2;1))-9/24-1/24*(ОСТАТ(B2;1)>13/24));8/24)*((ОТБР(B2)-ОТБР(A2))>{-1;0;1}))*1440
 
Андрей Лящук,
Сперва поругать хотел, потом похвалить, ибо нашел что не прав, но пытливый медвежий ум чувствовал что есть подвох
28.05.2020 19:00:00 30.05.2020 17:00:00 считает не корректно.
Изменено: БМВ - 16.05.2020 14:21:37
По вопросам из тем форума, личку не читаю.
 
Код
=СУММПРОИЗВ(ЧИСТРАБДНИ(ВЫБОР({1;2;3};A2;B2;A2+1);ВЫБОР({1;2;3};A2;B2;B2-1);праздники!$A$1:$A$59);ВЫБОР({1;2;3};ОСТАТ(МИН(ОТБР(A2)+18/24;B2)-МАКС(9/24;МИН(ОСТАТ(A2;1);18/24))-1/24*(ОСТАТ(A2;1)<13/24);1);(МИН(18/24;ОСТАТ(B2;1))-9/24-1/24*(ОСТАТ(B2;1)>13/24));8/24)*((ОТБР(B2)-ОТБР(A2))>{-1;0;1}))*1440
Изменено: Андрей Лящук - 16.05.2020 14:30:08
Страницы: Пред. 1 2
Наверх