在Excel中計算兩個日期之間的工作日數量

在Excel中計算兩個日期之間的工作日數量

來源:excel格子社區

在日常工作中經常需要計算兩個日期之間的工作日數量,如計算出勤天數等。在Excel中可以使用NETWORKDAYS函數來進行計算,該函數的語法如下:

NETWORKDAYS(start_date, end_date, [holidays])

其中:

start_date 為開始日期

end_date 為終止日期

holidays 為星期六、星期日以外的假日列表,可選參數

例如要計算日期「2010-5-14」與「2010-6-23」之間的工作日數量。由於這兩個日期之間的6月14日至16日為端午節放假調休,實際放假為「2010-6-16」端午節1天,所以這兩個日期之間的工作日數量為:

=NETWORKDAYS("2010-5-14","2010-6-23","2010-6-16")

或:

=NETWORKDAYS("2010-5-14","2010-6-23")-1

公式返回結果為28,即日期「2010-5-14」與「2010-6-23」之間的工作日數量為28(含這兩個日期)。

有些時候使用第二個公式來計算顯得更為方便一些,特別是當假日適逢星期六、星期日需放假調休時。由於國家規定如果假日適逢星期六、星期日,應當在工作日補假,因而只需減去兩個日期之間的假日數即可得到工作日數量。例如A1單元格中包含起始日期「2010-8-23」,B1單元格中包含終止日期「2010-10-20」,由於這兩個日期之間包含中秋節放假1天、國慶節放假3天,在C1單元格中輸入公式:

=NETWORKDAYS(A1,B1)-4

公式返回結果為39,注意由於A1、A2單元格為日期格式,公式所在的C1單元格也會被自動設置為日期格式,這時需將其單元格格式調整為「常規」。

NETWORKDAYS函數在Excel 2010、Excel 2007中可以直接使用,但在Excel 2003需載入「分析工具庫」後才能使用。方法是單擊菜單「工具→載入宏」,在彈出的「載入宏」對話框中勾選「分析工具庫」,單擊「確定」。

上述工作日的計算是默認星期六、星期日為周末的,有時需要把星期六也算作工作日,即僅星期日為周末,這時怎樣計算兩個日期之間的工作日呢?例如要計算2010年3月中包含星期六的工作日數量,假如A1單元格中為開始日期「2010-3-1」,B1單元格中位終止日期「2010-3-31」,在C1單元格中輸入公式:

=SUMPRODUCT(--(MOD(ROW(INDIRECT("1:"&(B1-A1+1)))+A1-2,7)>0))

即可得到2010年3月份包含星期六的工作日數量,公式返回結果為27。

在Excel 2010中,還可以使用新增函數NETWORKDAYS.INTL直接進行計算。NETWORKDAYS.INTL函數可以指定一個星期中的任意某天為周末,其語法為:

NETWORKDAYS.INTL(start_date, end_date, [weekend], [holidays])

其中可選參數「weekend」用數值或7個字元長的字元串指定周末。該參數為數值時:

周末數

周末日

1 或省略

星期六、星期日

2

星期日、星期一

3

星期一、星期二

4

星期二、星期三

5

星期三、星期四

6

星期四、星期五

7

星期五、星期六

11

僅星期日

12

僅星期一

13

僅星期二

14

僅星期三

15

僅星期四

16

僅星期五

17

僅星期六

該參數為字元串時,必須為7個字元長。該字元串由「1」和「0」組成,其中的每個字元代表一周中的一天,從星期一開始,用「1代表非工作日,「0代表工作日。如僅指定星期日為周末,該參數為「0000001」。本例中可使用下面的公式:

=NETWORKDAYS.INTL(A1,B1,11)

或:

=NETWORKDAYS.INTL(A1,B1,"0000001")

兩個公式都返回27。

推薦閱讀:

工作到位
「每天加班2小時,卻被老闆開除了」
70餘個工作組無一失手,半年「獵狐」680名
2016年醫療設備維修工作計劃
郝茹:我的老闆金國棟先生

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