Тестирую, пока работает правильно, возможно формула получилась после математического упрощения более длинной формулы. А что за формула в G25? Возможно из нее получена сокращенная формула
Смысл формулы (пока до конца тоже не разобрался): Первое слагаемое:
Code
МИН(D14;"06:00")-МИН(C14;"06:00")
- вычисляем сколько ночных часов прошло с 00:00 до 06:00 Второе слагаемое:
Code
МАКС(D14;"20:00")-МАКС(C14;"20:00")
- сколько ночный часов с 20:00 до 24:00 Третье слагаемое:
Code
(D14<C14)*("06:00"-"20:00"+1)
- если время окончания меньше времени начала, то произошел переход через полночь, соответственно добавляем 10 ночных часов, и происходит коррекция для первого и второго слагаемых, т.к. там могли получится отрицательные часы
В формуле лишний МИН(), Ч() тоже лишняя, формулу можно немного упростить: [vba]
Тестирую, пока работает правильно, возможно формула получилась после математического упрощения более длинной формулы. А что за формула в G25? Возможно из нее получена сокращенная формула
Смысл формулы (пока до конца тоже не разобрался): Первое слагаемое:
Code
МИН(D14;"06:00")-МИН(C14;"06:00")
- вычисляем сколько ночных часов прошло с 00:00 до 06:00 Второе слагаемое:
Code
МАКС(D14;"20:00")-МАКС(C14;"20:00")
- сколько ночный часов с 20:00 до 24:00 Третье слагаемое:
Code
(D14<C14)*("06:00"-"20:00"+1)
- если время окончания меньше времени начала, то произошел переход через полночь, соответственно добавляем 10 ночных часов, и происходит коррекция для первого и второго слагаемых, т.к. там могли получится отрицательные часыMCH
Сообщение отредактировал MCH - Суббота, 15.12.2012, 10:40
Допустим время начала 4:00, а время конца 14:00 МИН("14:00";"06:00") вернет 6, так как это меньше 14 МИН("4:00";"06:00") вернет 4, так как это меньше 6 Разница будет сколько часов ночной смены до 6:00, т.е. 2 часа МАКС("14:00";"20:00") вернет 20, так как это больше 14 МАКС("4:00";"20:00") вернет 20, так как это больше 4 Разница будет сколько часов ночной смены после 20:00, т.е. 0 часов Сумма двух МИН и двух МАКС будет 2 часа ночного времени, что соответствует данному условию.
Теперь начало в 14:00, а конец в 23:00 МИН("23:00";"06:00") вернет 6, так как это меньше 23 МИН("14:00";"06:00") вернет 6, так как это меньше 14 Разница будет сколько часов ночной смены после 6:00, т.е. 0 МАКС("23:00";"20:00") вернет 23, так как это больше 20 МАКС("14:00";"20:00") вернет 20, так как это больше 14 Разница будет сколько часов ночной смены после 20:00, т.е. 3 часа Сумма двух МИН и двух МАКС будет 3 часа ночного времени, что соответствует данному условию.
А теперь время начала 4:00, а время конца 23:00 Сумма двух МИН и двух МАКС будет 2+3=5 часов ночного времени, что соответствует данному условию.
О фрагменте формулы (23:00<4:00)*("06:00"-"20:00"+1) Сказано правильно, т.е. прибавится 0, так как 23:00<4:00=ЛОЖЬ=0
Quote (MCH)
Смысл формулы (пока до конца тоже не разобрался)
Скорее всего уже разобрался.
Допустим время начала 4:00, а время конца 14:00 МИН("14:00";"06:00") вернет 6, так как это меньше 14 МИН("4:00";"06:00") вернет 4, так как это меньше 6 Разница будет сколько часов ночной смены до 6:00, т.е. 2 часа МАКС("14:00";"20:00") вернет 20, так как это больше 14 МАКС("4:00";"20:00") вернет 20, так как это больше 4 Разница будет сколько часов ночной смены после 20:00, т.е. 0 часов Сумма двух МИН и двух МАКС будет 2 часа ночного времени, что соответствует данному условию.
Теперь начало в 14:00, а конец в 23:00 МИН("23:00";"06:00") вернет 6, так как это меньше 23 МИН("14:00";"06:00") вернет 6, так как это меньше 14 Разница будет сколько часов ночной смены после 6:00, т.е. 0 МАКС("23:00";"20:00") вернет 23, так как это больше 20 МАКС("14:00";"20:00") вернет 20, так как это больше 14 Разница будет сколько часов ночной смены после 20:00, т.е. 3 часа Сумма двух МИН и двух МАКС будет 3 часа ночного времени, что соответствует данному условию.
А теперь время начала 4:00, а время конца 23:00 Сумма двух МИН и двух МАКС будет 2+3=5 часов ночного времени, что соответствует данному условию.
О фрагменте формулы (23:00<4:00)*("06:00"-"20:00"+1) Сказано правильно, т.е. прибавится 0, так как 23:00<4:00=ЛОЖЬ=0AlexM
Номер мобильного модема (без голосовой связи) 9269171249 МегаФон, Московский регион.
Сообщение отредактировал AlexM - Воскресенье, 16.12.2012, 08:21