遇到同事的一個問題,求某段時間內除雙休日、節假日之外的時間差,格式是[h]:mm(xx小時xx分)。這個要求是用在統計多少個工做日完成的延遲上,或者以此來統計及時率。html
爲此設計了一個表格以下圖,設定了整個第二行2:2,存放國定假日。
A5:A8爲條件區域,可能在某個時間段內會遇到的情況。
依據A列的條件,在B5:C8輸入「起始時間」與「結束時間」 做爲案例。
在D5:D8間人工統計除節假日外的時間差。(節假日包括雙休日與國定假日)
而後在E5:E8依據A列條件單獨計算。
此處主要利用了NETWORKDAYS函數,計算除節假日外的工做日有多少天。
語法:
NETWORKDAYS(start_date, end_date, [holidays])
start_date:起始時間
end_date:結束時間
[holidays]:人工設定的除雙休日外的假日,如每一年的國慶節。若統計的時間段內無相關人爲假日也能夠省略。
須要統計的時間格式是[h]:mm(xx小時xx分),輸入以下公式:
一、假期開始,工做日結束:
=NETWORKDAYS(B5,C5,
2:2
)+(C5-INT(C5))-1
(1)
NETWORKDAYS(B5,C5,
2:2
):2:2即第二行爲國定假日區域,
求得兩時間之間工做日天數爲1
;
(2)
(C5-INT(C5)):求得結束時間當天所用時間,得出的時間爲10:00。
(3)
-1
:由於前面Networkdays函數求得天數爲1個工做日,但當天僅用了10:00延遲。因此須要-1。
二、假期開始,假期結束:
=0
三、工做日開始,工做日結束:
=C7-B7+NETWORKDAYS(B7,C7,$2:$2)-2
四、工做日開始,假期結束:
=1-(B8-INT(B8))+NETWORKDAYS(B8,C8,$2:$2)-2
單獨的公式完成後,利用IF函數對幾個條件進行嵌套,能夠先直接引用E5到E8單元格,以後再填入這些條件公式。
最終F5中的公式爲:
=IF(NETWORKDAYS(B5,B5,$2:$2)=0,IF(NETWORKDAYS(C5,C5,$2:$2)=0,0,NETWORKDAYS(B5,C5,2:2)+(C5-INT(C5))-1),IF(NETWORKDAYS(C5,C5,$2:$2)=0,1-(B5-INT(B5))+NETWORKDAYS(B5,C5,$2:$2)-2,C5-B5+NETWORKDAYS(B5,C5,$2:$2)-2))
拖拽填充公式至F5:F8區域,計算完成。