2013-06-25 2 views
0

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

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

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

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

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

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

Alex

+0

привет, Я застрял в той же проблеме. можете ли вы поделиться образцом ваших справочных таблиц PLZ. – dEePaK

ответ

0

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

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

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. Я рекомендую использовать списки и/или имена.

+0

как найти «дневной» и «дневной стартовый» плз. – dEePaK