Excel双列周/日格式日期范围校验异常求助
Excel日期范围校验问题解决办法
原公式存在的问题
- 引号语法错误:公式中多处引号未正确闭合(如
A2>"in 1w0d缺少结束引号),导致公式无法正常解析。 - 字符串比较逻辑错误:Excel字符串按字符ASCII顺序比较,两位数周数(如24)和一位数(如2)的字符串会出现反向判断(例如
"in 2w0d"会被判定为大于"in 24w0d"),无法正确识别周数大小。 - 未结合天数判断:直接比较完整字符串无法精准区分
1w0d和1w3d这类周数相同但天数不同的情况。
正确解决方案
方案1:Excel 365/2021及以上版本(推荐)
使用TEXTBEFORE和TEXTAFTER函数提取周数和天数,转换为总天数后判断范围:
=IF(AND( (--TEXTBEFORE(TEXTAFTER(A2," "),"w")*7 + --TEXTBEFORE(TEXTAFTER(A2,"w"),"d"))>7, (--TEXTBEFORE(TEXTAFTER(A2," "),"w")*7 + --TEXTBEFORE(TEXTAFTER(A2,"w"),"d"))<168, (--TEXTBEFORE(TEXTAFTER(B2," "),"w")*7 + --TEXTBEFORE(TEXTAFTER(B2,"w"),"d"))>7, (--TEXTBEFORE(TEXTAFTER(B2," "),"w")*7 + --TEXTBEFORE(TEXTAFTER(B2,"w"),"d"))<168 ), "Between 1 week and 24 weeks", "Not between")
- 逻辑说明:将
xwyd格式转换为总天数(x*7 + y),判断总天数是否严格大于7天(1w0d)且严格小于168天(24w0d),两列同时满足则输出指定文本,否则输出"Not between"。
方案2:旧版Excel(无TEXTBEFORE/TEXTAFTER)
使用MID和SEARCH函数提取周数和天数:
=IF(AND( (--MID(A2,SEARCH(" ",A2)+1,SEARCH("w",A2)-SEARCH(" ",A2)-1)*7 + --MID(A2,SEARCH("w",A2)+1,SEARCH("d",A2)-SEARCH("w",A2)-1))>7, (--MID(A2,SEARCH(" ",A2)+1,SEARCH("w",A2)-SEARCH(" ",A2)-1)*7 + --MID(A2,SEARCH("w",A2)+1,SEARCH("d",A2)-SEARCH("w",A2)-1))<168, (--MID(B2,SEARCH(" ",B2)+1,SEARCH("w",B2)-SEARCH(" ",B2)-1)*7 + --MID(B2,SEARCH("w",B2)+1,SEARCH("d",B2)-SEARCH("w",B2)-1))>7, (--MID(B2,SEARCH(" ",B2)+1,SEARCH("w",B2)-SEARCH(" ",B2)-1)*7 + --MID(B2,SEARCH("w",B2)+1,SEARCH("d",B2)-SEARCH("w",B2)-1))<168 ), "Between 1 week and 24 weeks", "Not between")
- 逻辑说明:通过
SEARCH定位空格、w、d的位置,用MID提取周数和天数,转换为总天数后进行范围判断,逻辑与方案1一致。
内容的提问来源于stack exchange,提问作者Boris
相关产品推荐
相关产品推荐

