excelperfect
本文提供了一個公式,能夠計算多種情形下某個月的工作日天數(shù),如下圖1所示。
圖1
單元格C2中的公式為:
=MAX(0,NETWORKDAYS(MAX($A2,C$1),MIN($B2,EOMONTH(C$1,0))))
向右拖至F列,向下拖至第8行。
NETWORKDAYS函數(shù)的語法為:
NETWORKDAYS(start_date,end_date, [holidays])
其中,參數(shù)start_date必需,指定開始日期;參數(shù)end_date必需,指定結(jié)束日期;參數(shù)holidays,可選,指定要排除的日期。
因此,參數(shù)start_date是公式中的:
MAX($A2,C$1)
獲得開始日期和當前月首日中較大的值。
參數(shù)end_date是公式中的:
MIN($B2,EOMONTH(C$1,0))
其中的EOMONTH(C$1,0)獲取當前月最后一天的日期值,因此獲取結(jié)束日期和當前月最后一天日期值中的較小值。
這樣,將本月中的開始和結(jié)束日期就確定了,傳遞給NETWORKDAYS函數(shù)得到當月工作日天數(shù)。
在第9行中,我們將假期排除在外,單元格C9中的公式為:
=MAX(0,NETWORKDAYS(MAX($A9,C$1),MIN($B9,EOMONTH(C$1,0)),$B$13:$B$15))
向右拖至F列。
公式中添加了NETWORKDAYS函數(shù)的可選參數(shù)holidays,將指定的日期排除。
在Excel 2010中,Microsoft引入了一個新函數(shù)NETWORKDAYS.INTL,增加了能夠自定義周末日期的功能。其語法為:
NETWORKDAYS.INTL(start_date,end_date, [weekend], [holidays])
其中,參數(shù)weekend可指定下表中的值:
圖2
參數(shù)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將認為周一、周三、周五是周末。
聯(lián)系客服