2012年10月30日 星期二

搞定Excel 日期時間相關計算--【六】日期相關函數(四)NETWORKDAYS、NETWORKDAYS.INTL

之前在「「隱藏版」函數Datedif()」一文中介紹過計算兩個日期之間相差多少天、月、年....的函數。但是!如果只要算相差多少個「工作日」呢?....頭大了吧!

NETWORKDAYS(日期1,日期2,假日列表)

最後一個函數可以先忽略(下段詳述),將會傳回第1個引述(日期)與第2個引數(日期)之間扣除週六、日之後的日數(也就是工作日啦!)。

但是....如果有些假日不是在週六、日呢?

這時候第三個引數就派上用場啦!使用者可以將假日的日期列成一張獨立清單(Excel 2007之後建議格式化成表格,方便日後增補時可以自動計算)

實作範例:

在這裡順便呼籲一下:那個「人事行政局」啊!別再搞這種「行事曆」啦!
至少....這種表格....也別用Excel 啦!Excel會哭哭的....

NETWORKDAYS.INTL(日期1,日期2,自訂週休參數(數值或文字),假日列表)

Excel 2010新增函數。功能跟NETWORKDAYS一樣,多了一個參數可以自訂固定周休日。如果不是休週六、週日的使用者可以更有彈性。
這個自訂週休參數有數值及文字兩種設定法:

自訂週休參數(數值):

代碼
固定休日
1 或省略
星期六,星期日
2
星期日,星期一
3
星期一,星期二
4
星期二,星期三
5
星期三,星期四
6
星期四,星期五
7
星期五,星期六
11
僅星期日
12
僅星期一
13
僅星期二
14
僅星期三
15
僅星期四
16
僅星期五
17
僅星期六

自訂週休參數(文字):

為 7 個字元長度的字串,而字串中的每個字元代表一週中的某一天,時間則是從星期一開始。1 代表非工作日,而 0 代表工作日。字串中只能使用字元 1 和 0。使用 1111111 將永遠傳回 0。例如,0000011 會產生週末,也就是星期六和星期日。
直接放在函數中,記得加「""」喔!

沒有留言: