使用辅助列,让转换问题保持可见。
D2 规范开始日期: =IF(B2="","",IF(ISNUMBER(B2),INT(B2),IF(AND(LEN(B2)=10,MID(B2,5,1)="-",MID(B2,8,1)="-"),DATE(LEFT(B2,4),MID(B2,6,2),RIGHT(B2,2)),"待检查")))
E2 规范完成日期: 对 C2 使用相同转换,但 C2 为空时返回 DATE(2026,3,1)。
F2 经过自然日: =IF(OR(D2="待检查",E2="待检查",D2=""),"待检查",IF(E2<D2,"待检查",E2-D2))。D:E 设置为 yyyy-mm-dd 等无歧义日期格式,F 设置为数字。
公式接受日期序列和严格格式的 ISO 文本,故意把 03/04/2026 标记为歧义。INT 会去除日期序列中的时间。测试:当天 → 0;2026-02-27 到 2026-03-01 → 2;完成日期空白时使用 3 月 1 日;2024-02-29 正确解析;完成早于开始 → 待检查。还需验证导入 ISO 字符串中的无效月份或日期,因为 DATE 可能把无效部分自动进位。