You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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})
  • 格式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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 14:25:05