在日常工作中经常需要计算两个日期之间的工作日数量,如计算出勤天数等。在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个字符长的字符串指定周末。该参数为数值时:
该参数为字符串时,必须为7个字符长。该字符串由“1”和“0”组成,其中的每个字符代表一周中的一天,从星期一开始,用“1”代表非工作日,“0”代表工作日。如仅指定星期日为周末,该参数为“0000001”。本例中可使用下面的公式: =NETWORKDAYS.INTL(A1,B1,11) 或: =NETWORKDAYS.INTL(A1,B1,"0000001") 两个公式都返回27 |