Excel中REGEX无法匹配含斜杠的日期问题求助
解决Excel中筛选1911年后日期的问题
核心问题分析
你当前使用的=REGEXTEST(B2, "191[1-9]")公式存在两个关键局限:
- 仅匹配1911-1919的年份,完全覆盖不到1920及以后的年份
- 对显示为两位年份的文本日期(如
Jan-09)无效,这类文本里没有完整的四位年份数字,正则无法匹配到目标模式
分场景解决方案
Excel中的日期分为「真实日期值」和「文本格式日期」,需要分别处理:
1. 处理真实日期值(底层为日期序列,如01/01/1910)
真实日期值无需用正则,直接用YEAR函数提取年份判断即可,准确率最高:
=YEAR(B2)>1911
这个公式不受单元格显示格式影响,不管显示成Jan-1910还是1910/01/01,都能正确提取底层年份。
2. 处理文本格式日期
针对不同文本格式,调整正则或用公式提取年份:
格式1:含四位年份的文本(如
Jan-1912、1910-1914)
调整正则表达式,覆盖1912及以后的所有四位年份:=REGEXTEST(B2, "19(1[2-9]|[2-9]\d)|20\d{2}")这个正则会匹配:
- 1912-1919(
191[2-9]) - 1920-1999(
19[2-9]\d) - 2000及以后的年份(
20\d{2})
- 1912-1919(
格式2:两位年份的文本(如
Jan-09,对应1909)
先提取两位年份,转换为四位年份后判断:=IF(ISNUMBER(--RIGHT(B2,2)), IF(--RIGHT(B2,2)>11, 1900+--RIGHT(B2,2), 2000+--RIGHT(B2,2))>1911, FALSE)注:如果你的场景中两位年份统一对应19XX(比如
Jan-09是1909,Jan-20是1920),可以简化为:=(1900+--RIGHT(B2,2))>1911格式3:手动输入的早期文本日期(如
Jan 1899)
这类文本直接用上述的REGEXTEST公式即可覆盖判断。
整合所有场景的公式
如果要同时兼容真实日期和所有文本格式,可以用嵌套公式:
=IF(ISNUMBER(B2), YEAR(B2)>1911, OR(REGEXTEST(B2, "19(1[2-9]|[2-9]\d)|20\d{2}"), IF(ISNUMBER(--RIGHT(B2,2)), (1900+--RIGHT(B2,2))>1911, FALSE)) )
内容的提问来源于stack exchange,提问作者Thomas Slade
相关产品推荐
相关产品推荐

