Excel公式返回#######(非列宽问题):NETWORKDAYS函数异常求助
解决思路
一、先修正公式逻辑错误
你的公式=NETWORKDAYS(EOMONTH(BJ6, 0) + 1, EOMONTH(BJ6, 0))本身存在逻辑问题:
EOMONTH(BJ6,0)+1是当月最后一天+1,也就是下月初的日期;而第二个参数是当月最后一天。NETWORKDAYS要求开始日期 ≤ 结束日期,否则会返回负数。如果单元格是日期格式,负数日期无法在Excel中显示,就会出现##########(和列宽无关)。
要计算BJ6对应月份的工作日天数,正确公式应该是取当月第一天到当月最后一天:
=NETWORKDAYS(EOMONTH(BJ6, -1) + 1, EOMONTH(BJ6, 0))
二、验证BJ6的日期有效性
如果修正公式后仍有问题,再排查BJ6的生成问题:
- 检查BJ6是否为真正的日期值:输入公式
=ISNUMBER(BJ6),如果返回FALSE,说明BJ6是文本格式(即使显示为MMM-YY)。 - 若BJ6是文本,需要先转换为日期值再计算,修改公式为:
=NETWORKDAYS(EOMONTH(DATEVALUE(BJ6), -1) + 1, EOMONTH(DATEVALUE(BJ6), 0))
- 如果DATEVALUE转换失败(比如文本格式不标准),可以手动提取年月构建日期:比如BJ6显示为"Jan-23",可以用
=DATE(RIGHT(BJ6,2)+2000,MONTH(BJ6&1),1)来生成当月第一天,再结合EOMONTH计算。
三、额外排查项
- 确认是否需要排除自定义节假日:如果有公司特定节假日,需要在NETWORKDAYS的第三个参数指定节假日区域,比如
=NETWORKDAYS(月初,月末,$A$1:$A$10)。
内容的提问来源于stack exchange,提问作者CodeMoto
相关产品推荐
相关产品推荐

