2013-06-25 68 views
0

我有一個包含數千個事件票證的Excel表。每張票通常會持續幾個小時或幾天,而且我通常會從截止日期和時間減去開幕日期和時間來計算總持續時間。VB或宏,以排除在Excel中計算持續時間的時間段

但是我想考慮並且不計算不在辦公時間(夜間),週末和假期的時間。因此,我創建了兩個額外的參考表,其中一個包含非工作時間(例如每天晚上7點至早上7點,每週六和週日以及公衆假期列表)。

現在我需要找到某種VB宏,它會自動計算每張票的「實際持續時間」,通過從總票期中刪除任何可能屬於該列表的時間。

我看了一下這個網站和其他論壇,但我找不到我在找什麼。如果有人能幫助我實現這一目標,我將非常感激。

最好的問候,

亞歷

+0

嗨, 我被困在同樣的問題。你能分享你參考表格的樣本嗎? – 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

如何找到「dayend」&「daystart」plz。 – dEePaK