谷歌表格用TODAY()做日期间隔计算结果错误,求修正方案
问题核心拆解
单元格显示内容仅为格式渲染结果,公式读取的是单元格实际存储的日期序列号。M7显示2020-01-08、公式栏显示2021-01-08的偏差,是自定义格式强制修改显示年份导致的,实际参与计算的是公式栏存储的2021年日期值,所有基于显示内容的临时调整(转文本、TO_DATE转换、手动减366)都无法从根源消除偏差。
第一步:修正M列日期的存储与显示一致性
- 选中整个M列
- 打开单元格格式设置面板,选择标准
yyyy-MM-dd日期格式,删除自定义格式中强制指定2020年的规则 - 确认后查看M7的显示值与公式栏值,两者会统一为实际存储的真实日期
如果需求为M列所有日期的真实存储值就是2020年(而非显示错误),按以下步骤批量修正错误的存储值: - 选中M列所有日期单元格,通过「拆分文本」功能按
-分隔符拆分为年、月、日三列独立值 - 使用
DATE函数重新拼接正确的2020年日期:=DATE(2020, 拆分后月列单元格, 拆分后日列单元格) - 将拼接完成的日期粘贴为数值,覆盖原M列的错误存储值
第二步:编写可批量复用的判断公式
在N7直接输入以下公式,下拉即可批量应用到所有行:
=ABS(M7 - TODAY()) < 7
- 用
ABS取两个日期的间隔绝对值,避免早于/晚于当前日期的场景出现负数误判 - 公式直接读取M列的实际存储日期值,不依赖单元格显示格式,无需针对单个场景手动调整参数
异常排查方案
如果公式仍返回错误结果,在空白单元格输入以下语句验证M7的存储类型:
=ISNUMBER(M7)
- 返回
FALSE:说明M7存储的是纯文本格式的假日期,改用带转换的公式即可:=ABS(DATEVALUE(M7) - TODAY()) < 7 - 返回
TRUE:说明日期存储正常,原判断公式即可正常运行。
内容的提问来源于stack exchange,提问作者Rick P
相关产品推荐
相关产品推荐

