`
阅: 2170 | 回: 0
发表于2015/10/24 17:05:47 楼主 
头像 等级:初学者
积分:0
财富值:0.0
身份:普通用户

Excel中计算两个日期之间的工作日数量

在日常工作中经常需要计算两个日期之间的工作日数量,如计算出勤天数等。在Excel中可以使用NETWORKDAYS函数来进行计算,该函数的语法如下:

    NETWORKDAYS(start_date, end_date, [holidays])

    其中:

    start_date   为开始日期

    end_date    为终止日期

    holidays      为星期六、星期日以外的假日列表,可选参数

    例如要计算日期“2010-5-14”“2010-6-23”之间的工作日数量。由于这两个日期之间的614日至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,注意由于A1A2单元格为日期格式,公式所在的C1单元格也会被自动设置为日期格式,这时需将其单元格格式调整为常规

    NETWORKDAYS函数在Excel 2010Excel 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。


我的个性签名

快速回复

目前不允许游客发表,请 登录 注册 后再发贴。