请求协助编写SIT存储天数计算的Excel公式
解决Excel「Live Days in SIT」列的日期计算问题
看起来你在处理Excel日期计算时遇到了小麻烦——仅当C列有日期时,你的公式返回了False。先理清楚你的需求和问题所在:
你的计算逻辑
你需要在E列实现以下存储天数计算规则:
- 若D列和C列均有日期,用C列日期减去D列日期;
- 若所有列均有日期,用C列日期减去D列日期;
- 若仅C列有日期,用当前日期(
TODAY())减去C列日期; - 若C列和B列均有日期,用C列日期减去B列日期;
- 若C列和A列均有日期,用C列日期减去A列日期;
- 若A、B、C列均有日期,用C列日期减去A、B列中的较小日期。
原公式的问题
你当前使用的公式嵌套过于复杂,而且用=0判断单元格是否为空并不准确(空日期单元格通常是空白而非0),这就导致仅C列有值时,条件判断没有命中正确分支,最终返回False。你的原公式如下:
=IF(L4758=0,IF(J4758=0,IF(I4758=0,TODAY()-K4758)),IF(L4758>0,L4758-K4758,IF(L4758=0,IF(I4758=0,IF(J4758>0,J4758-K4758,IF(J4758<I4758,IF(J4758>0,J4758-K4758,IF(J4758>I4758,IF(I4758>0,I4758-K4758)))))))))
(注:从公式和表格内容来看,列对应关系为:A列=I列,B列=J列,C列=K列,D列=L列,E列为计算目标列)
修正后的公式
我们可以重新梳理逻辑优先级,用ISBLANK()更精准地判断单元格是否为空,写出更清晰易懂的公式:
=IF(AND(NOT(ISBLANK(L4758)), NOT(ISBLANK(K4758))), K4758-L4758, IF(AND(NOT(ISBLANK(I4758)), NOT(ISBLANK(J4758)), NOT(ISBLANK(K4758))), K4758-MIN(I4758,J4758), IF(AND(NOT(ISBLANK(J4758)), NOT(ISBLANK(K4758))), K4758-J4758, IF(AND(NOT(ISBLANK(I4758)), NOT(ISBLANK(K4758))), K4758-I4758, IF(NOT(ISBLANK(K4758)), TODAY()-K4758, "")))))
公式说明
- 优先级判断:先处理D列存在的情况(包括所有列都有值的场景),再依次处理A/B/C都存在、B/C存在、A/C存在、仅C存在的情况,逻辑清晰不混乱;
- 准确判断空值:用
ISBLANK()替代=0,避免空单元格被误判为0导致的逻辑错误; - 边界处理:如果C列也为空,返回空白值,你可以根据需求改成其他提示内容(比如
"无日期")。
内容的提问来源于stack exchange,提问作者emald
相关产品推荐
相关产品推荐

