使用Excel =NETWORKDAYS()函数出现超大负数结果的问题咨询
解决NETWORKDAYS返回超大负数的问题
你这明显是踩了Excel函数的两个常见坑,咱们一步步捋清楚:
核心问题1:日期参数顺序搞反了
NETWORKDAYS函数的语法规则是:NETWORKDAYS(start_date, end_date, [holidays]),必须把开始日期放在第一个参数,结束日期放在第二个。你现在要计算2017-04-28到2018-04-24的工作日,却把结束日期(2018-04-24)放在了第一个位置,相当于让函数倒着算“结束日期到开始日期”的天数,结果自然会是负数。
核心问题2:直接写数字日期会被当成算术运算
你公式里的2018-4-24会被Excel自动解析成减法计算:2018 - 4 - 24 = 1990。而Excel的日期是用序列号计数的——1代表1900年1月1日,1990对应的实际日期是1905年6月19日,和你要的2018年日期差了一百多年,这就是为啥会出现-29221这种夸张负数的原因。
正确的公式写法
假设你的开始日期2017-04-28存在单元格D2,公休假日区域在PUBLIC_HOLIDAYS工作表的A2:A15(举个示例范围),正确公式应该是这样:
=NETWORKDAYS(D2, "2018-4-24", PUBLIC_HOLIDAYS!$A$2:$A$15)
如果结束日期也存在某个单元格(比如E2),更稳妥的写法是直接引用单元格,避免手动输入出错:
=NETWORKDAYS(D2, E2, PUBLIC_HOLIDAYS!$A$2:$A$15)
额外排查小细节
- 确认
PUBLIC_HOLIDAYS里的假日都是标准日期格式,不是文本格式(可以选中单元格看编辑栏,日期格式会显示为2017-10-1这类样式,文本格式会左对齐)。 - 检查假日区域的引用范围有没有写错,比如是不是漏选了单元格,不过这个一般只会导致少扣假日,不会出现超大负数。
内容的提问来源于stack exchange,提问作者Rhyfelwr
相关产品推荐
相关产品推荐

