求助:用IF函数按列顺序计算起始日期与首个非空日期的天数差
解决Excel多列优先顺序计算日期差问题
问题分析
你需要按Compliance→Training→COMPLETED→Cancel的优先级,找到第一个非空的日期列,计算该列日期与Created列的天数差;若所有列都为空则返回空值。你之前的IFS公式逻辑顺序错误,导致无法得到正确结果。
正确公式方案
方案1:使用IFS函数(兼容多数Excel版本)
=IFS(NOT(ISBLANK([@Compliance])), DAYS([@Compliance], [@Created]), NOT(ISBLANK([@Training])), DAYS([@Training], [@Created]), NOT(ISBLANK([@COMPLETED])), DAYS([@COMPLETED], [@Created]), NOT(ISBLANK([@Cancel])), DAYS([@Cancel], [@Created]), TRUE, "")
- 逻辑说明:
IFS按从上到下的顺序判断条件,只要某一列非空,就计算该列与Created的天数差;如果前面所有列都为空,最后用TRUE匹配,返回空值。
方案2:使用XLOOKUP函数(适用于Excel 365/2021及以上版本)
如果你的Excel版本支持XLOOKUP,可以用更简洁的公式:
=LET( cols, CHOOSECOLS([@], "Compliance", "Training", "COMPLETED", "Cancel"), first_nonblank, XLOOKUP(TRUE, NOT(ISBLANK(cols)), cols, "", 0, 1), IF(first_nonblank="", "", DAYS(first_nonblank, [@Created])) )
- 逻辑说明:先用
CHOOSECOLS按指定顺序提取目标列,再用XLOOKUP找到第一个非空值,最后判断是否为空,不为空则计算天数差。
内容的提问来源于stack exchange,提问作者Travis Webb
相关产品推荐
相关产品推荐

