VB или макрос для исключения периода времени из расчета продолжительности времени в Excel

У меня есть таблица Excel, содержащая тысячи обращений об инцидентах. Каждый билет обычно переносится в течение нескольких часов или нескольких дней, и я обычно рассчитываю общую продолжительность, вычитая дату и время открытия из даты и времени закрытия.

Однако хотелось бы учитывать и не учитывать нерабочее время (ночное время), выходные и праздничные дни.

Поэтому я создал две дополнительные справочные таблицы, одна из которых содержит нерабочие часы (например, каждый день после 19:00 до 7:00 утра, суббота и воскресенье в течение всего дня и список государственных праздников).

Теперь мне нужно найти какой-нибудь макрос VB, который автоматически вычислял бы "реальную продолжительность" каждого билета, удаляя из общего времени билета любое время, которое попадало бы под этот список.

Я просмотрел этот сайт и другие форумы, однако я не смог найти то, что ищу. Если кто-то может помочь мне достичь этого, я был бы очень благодарен.

С наилучшими пожеланиями,

Алекс


person Alex Carrausse    schedule 25.06.2013    source источник
comment
привет, я застрял на той же проблеме. Можете ли вы поделиться образцом ваших справочных таблиц, пожалуйста.   -  person dEePaK    schedule 18.09.2013


Ответы (1)


Можно использовать функцию NETWORKDAYS, рабочих дней в промежутке. На самом деле вы, кажется, идеально настроены для этого: он принимает дату начала, дату окончания и указатель на ряд праздников. По умолчанию учитываются все дни кроме выходных.

Для расчета внутридневного времени вам понадобится дополнительная магия. если предположить, что билеты открываются и закрываются только в рабочее время, это будет выглядеть так:

first_day_hrs := dayend - ticketstart
last_day_hrs := ticketend - daystart
inbeetween_hrs := (NETWORKDAYS(ticketstart, ticketend, rng_holidays) - 2) * (dayend - daystart)

total_hrs := first_day_hrs + inbetween_hrs + last_day_hrs

Конечно, на самом деле имена должны относиться к ячейкам Excel. Я рекомендую использовать списки и/или имена.

person Torben Klein    schedule 25.06.2013
comment
как найти dayend & daystart plz. - person dEePaK; 18.09.2013