WORKDAY.INTL函数未跳过节假日问题排查求助
问题分析与解决方案
核心问题
你的WORKDAY.INTL函数无法识别M列的节假日,本质是M列的“日期”并非Excel可识别的标准日期格式——虽然显示为MM dd yy,但实际是文本格式,导致函数无法读取为有效日期值。
解决步骤
1. 彻底将M列文本转为标准日期
不用纠结DATEVALUE的报错,直接用以下方法把M列转成真正的日期值:
- 选中M列,右键选「设置单元格格式」→「日期」,挑任意标准格式(比如
yyyy/mm/dd),点击确定。 - 如果还是不行,用公式批量转换:在空白列(比如N列)输入:
下拉填充后,选中N列复制,右键M列选「选择性粘贴」→「数值」,替换原M列内容。这样M列就全是Excel能识别的日期值了。=DATE(RIGHT(M2,2)+2000,MID(M2,1,2),MID(M2,4,2))
2. 修正节假日参数的引用
WORKDAY.INTL的节假日参数只需要标准日期值的单元格区域,不用额外用DATEVALUE转换。只要M列是有效日期,直接引用就会生效。
建议把原公式里的整列M:M改成实际的节假日范围(比如M2:M51),避免空单元格干扰:
=TEXT(WORKDAY.INTL(C4,1,1,M2:M51),"mmm dd") & "-"&TEXT(WORKDAY.INTL(C4,10,1,M2:M51),"mmm dd")
比如如果Mar 02是节假日,公式会自动把结束日期从Mar 14往后偏移1天到Mar 15。
3. 排查额外问题
- 确认节假日日期确实在
C4+1到C4+10的工作日范围内,如果不在,自然看不到日期偏移。 - 检查M列有没有隐藏的空格,比如单元格开头/结尾的空格,会导致日期识别失败,可以用
TRIM(M2)先清理空格再转换。
内容的提问来源于stack exchange,提问作者user1786889
相关产品推荐
相关产品推荐

