Excel中兩個日期之間工作日的精確計算

功能強大的Excel提供了眾多日期計算函數,為我們的計算提供了方便。計算兩個日期間的間隔時間最簡單的方法就是,兩個日期值直接相減,相減的結果是間隔的自然日。 如果需要計算兩個日期之間間隔的工作日,可以使用networkdays(start_date,end_date,holidays)函數:三個參數分別是起始日期、結束日期、作為特定假日的一個或多個日期。返回的結果是排除兩個日期之間的雙休日和指定假日的完整工作日數值,是個整數,取整方法是向上取整,即不足一日按一日計算。但是該函數的計算結果與我們的實際經驗有差異,例如:networkdays("2011-1-5 17:47:00","2011-1-7 15:56:00")=3天,按我們常理理解應該是2天,也就是說該函數把當天也計入了的。如果單純在其結果上減去1天,也不行。 還有,如果我們需要的是精確結果,未取整的數值,這個函數肯定不行,又該使用什麼函數呢?好像Excel沒有直接提供這樣的函數,那麼我們只能採用變通的方法進行處理,下面介紹一下我的思路和方法: 首先再介紹另外一個工作日函數workday(start_date,days,holidays):計算起始日期之前或之後相隔指定工作日的某一日期的日期值。它也帶有3個參數:start_date表示進行日期,days為start_date之前(負)或之後(正)不含周末及節假日的天數,holidays表示作為特定假日的一個或多個日期。 該思路是利用日期值直接相減得到精確天數,保留該精度進行計算,再加上用間接方法剔除非工作日,得到精確計算結果。思路: ①用結束時間減去開始時間得到兩個日期間隔的自然日(N);②用workday函數計算從開始時間起間隔N個工作日後的日期值(END),該日期再加上N的小數部分; ③用新得到的日期END減去結束時間,得到開始時間與結束時間間的節假日(H);④用N - H得到開始時間到結束時間間隔的工作日。 實例:得到開始時間2010-12-27 10:36和結束時間2011-1-7 14:06之間間隔的工作日數,保留小數。 ① = "2011-1-7 14:06 " - "2010-12-27 10:36" = 11.1458② = WORKDAY("2011-1-7 14:06 ",INT(11.1458))+(11.1458-INT(11.1458)) = "2011-1-11 3:30"; ③ = "2011-1-11 3:30" - "2011-1-7 14:06 " = 3.5583;④= 11.1458 - 3.5583 = 7.5875。 結果為7.5875天。
推薦閱讀:

Excel中的「掃地僧」,一出手就不凡
Excel非連續單元格數據求和技巧
移動端 Office 應用全免費,微軟的無奈之舉?
Excel 2013中FORMULATEXT函數公式的使用方法介紹
[Excel技巧]使用數組公式

TAG:工作 | 計算 | 日期 | Excel |