excelperfect 本文提供了一个公式,能够计算多种情形下某个月的工作日天数,如下图1所示。 图1 单元格C2中的公式为: =MAX(0,NETWORKDAYS(MAX($A2,C$1),MIN($B2,EOMONTH(C$1,0)))) 向右拖至F列,向下拖至第8行。 NETWORKDAYS函数的语法为: NETWORKDAYS(start_date,end_date, [holidays]) 其中,参数start_date必需,指定开始日期;参数end_date必需,指定结束日期;参数holidays,可选,指定要排除的日期。 因此,参数start_date是公式中的: MAX($A2,C$1) 获得开始日期和当前月首日中较大的值。 参数end_date是公式中的: MIN($B2,EOMONTH(C$1,0)) 其中的EOMONTH(C$1,0)获取当前月最后一天的日期值,因此获取结束日期和当前月最后一天日期值中的较小值。 这样,将本月中的开始和结束日期就确定了,传递给NETWORKDAYS函数得到当月工作日天数。 在第9行中,我们将假期排除在外,单元格C9中的公式为: =MAX(0,NETWORKDAYS(MAX($A9,C$1),MIN($B9,EOMONTH(C$1,0)),$B$13:$B$15)) 向右拖至F列。 公式中添加了NETWORKDAYS函数的可选参数holidays,将指定的日期排除。 在Excel 2010中,Microsoft引入了一个新函数NETWORKDAYS.INTL,增加了能够自定义周末日期的功能。其语法为: NETWORKDAYS.INTL(start_date,end_date, [weekend], [holidays]) 其中,参数weekend可指定下表中的值: 图2 参数weekend也可以指定由0和1组成的7个字符长的字符串,其每个字符代表一周中的某一天,从周一开始。1代表该天是非工作日,0代表工作日。例如,0000011表示周末是周六和周日。注意,在字符串中只能有1和0,且使用1111111将总是返回0。 对于我们所举的示例来说,如果在单元格C9中输入公式: =MAX(0,NETWORKDAYS.INTL(MAX($A9,C$1),MIN($B9,EOMONTH(C$1,0)),6, $B$13:$B$15)) Excel将会认为周四和周五是周末。 使用公式: =MAX(0,NETWORKDAYS.INTL(MAX($A9,C$1),MIN($B9,EOMONTH(C$1,0)),'1010100', $B$13:$B$15)) Excel将认为周一、周三、周五是周末。
|
|
来自: hercules028 > 《excel》