使用NETWORKDAYS(Microsoft Excel)指定不同的周末
Sunil可以使用NETWORKDAYS函数返回两个日期之间的常规工作日数。该函数假定星期六和星期日不是工作日,但在Sunil的组织中,只有星期日才算作非工作日。他想知道是否有一种使用NETWORKDAYS的方法,并指定只将星期日排除在返回的计数之外。
您可以使用基于NETWORKDAYS函数的公式来确定。假定开始日期在A1中,结束日期在B1中,以下公式将检查两个日期之间的日期,并实质上返回该范围内的非星期日天数:
=NETWORKDAYS(A1,B1)+SUMPRODUCT(--(WEEKDAY (ROW(INDIRECT(A1&":"&B1)))=7))
当然,由于周日是一周中唯一的一天,因此您可以跳过NETWORKDAYS的使用,而使用SUMPRODUCT来确定是否应该计算该天:
=SUMPRODUCT(--(WEEKDAY(ROW(INDIRECT(A1&":"&B1)))>1))
如果您期望该范围内可能有假期,并且那些假期在命名的“假期”范围内,那么您需要返回到在公式中使用NETWORKDAYS:
=NETWORKDAYS(A1,B1,holidays)+SUMPRODUCT(-- (WEEKDAY(ROW(INDIRECT(A1&":"&B1)))=7),-- (NOT(ISNUMBER(MATCH(ROW(INDIRECT(A1&":"&B1)) ,holidays,0)))))
当然,如果您使用的是最新版本的Excel(从Excel 2010开始),则可以使用NETWORKDAYS.INTL函数,该函数比早期的NETWORKDAYS函数具有更多的功能。两者之间最大的区别是NETWORKDAYS.INTL允许您指定函数应如何处理周末。因此,例如,在Sunil的情况下,仅将星期日视为“周末”,您可以使用以下公式:
=NETWORKDAYS(A1,B1,11,Holidays)
请注意,此版本与NETWORKDAYS函数的完整版本之间的唯一区别是包含了新的第三个参数。在这种情况下,值11表示仅应将星期日视为周末,但您可以根据需要使用其他任何其他参数值。
Number |
Weekend Days |
|
1 |
Saturday, Sunday |
|
2 |
Sunday, Monday |
|
3 |
Monday, Tuesday |
|
4 |
Tuesday, Wednesday |
|
5 |
Wednesday, Thursday |
|
6 |
Thursday, Friday |
|
7 |
Friday, Saturday |
|
11 |
Sunday |
|
12 |
Monday |
|
13 |
Tuesday |
|
14 |
Wednesday |
|
15 |
Thursday |
|
16 |
Friday |
|
17 |
Saturday |
您也可以使用NETWORKDAYS.INTL执行其他魔术,但这最好留给其他_ExcelTips_。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本技巧(12450)适用于Microsoft Excel 2007、2010、2013和2016。您可以在此处为Excel的较早菜单界面找到此技巧的版本:
链接:/ excel-Specifying_Different_Weekends_with_NETWORKDAYS [使用NETWORKDAYS指定不同的周末]。