使用NETWORKDAYS计算排除节假日的工作日时遇#VALUE!错误求助
解决NETWORKDAYS添加节假日参数返回#VALUE!的问题
问题原因
从公式求值器的结果可以看到,Excel把节假日区域识别成了带引号的字符串"Holidays!$A$2:$A$28",而非真正的单元格区域引用。这是因为在R1C1格式的公式中,直接写Holidays!HRange会被当作文本内容,没有被识别为对命名区域的有效引用。
修复方法
方法1:直接使用工作簿级命名区域
如果HRange是工作簿级的命名区域,无需添加工作表前缀,直接使用命名区域名称即可:
ActiveCell.FormulaR1C1 = "=NETWORKDAYS([@[AdjAPSRecvdDt]],[@[APS_ACK_DT]],HRange)"
方法2:改用R1C1格式的具体区域引用
如果HRange是工作表级命名区域,或者需要直接指定单元格范围,用R1C1格式对应A2:A28区域:
ActiveCell.FormulaR1C1 = "=NETWORKDAYS([@[AdjAPSRecvdDt]],[@[APS_ACK_DT]],Holidays!R2C1:R28C1)"
方法3:用INDIRECT函数转换引用
如果必须保留原命名区域的写法,使用INDIRECT函数将字符串转换为有效区域引用(注意公式内的双引号需要用两个双引号转义):
ActiveCell.FormulaR1C1 = "=NETWORKDAYS([@[AdjAPSRecvdDt]],[@[APS_ACK_DT]],INDIRECT(""Holidays!HRange""))"
验证要点
- 确认
HRange引用的单元格内都是有效的日期格式 - 检查命名区域的作用域:工作表级命名区域必须添加工作表前缀,工作簿级命名区域可直接使用名称
内容的提问来源于stack exchange,提问作者bethw12000
相关产品推荐
相关产品推荐

