IF 参数的通用日期值返回

IF 参数的通用日期值返回

纸张剪报

使用在我之前构建的代码返回通用年份值时遇到了一些问题。如果 F 列中有日期,则返回结果很好。但是,如果值为空白,则返回的是通用日期。我尝试了一些 LEN 和 ISBLANK 想法,但每次都会收到错误消息或参数过多。E3 内部是以下代码:

=IF($D3="Forklift",DATE(YEAR([@[Annual Validation Date ]])+2,MONTH([@[Annual Validation Date ]]),DAY([@[Annual Validation Date ]])),DATE(YEAR([@[Annual Validation Date ]])+1,MONTH([@[Annual Validation Date ]]),DAY([@[Annual Validation Date ]])))

我确信有一个简单的解决方法,但出于某种原因我找不到它。任何帮助都将不胜感激!

编辑:如果 F 列为空白,我希望它不返回任何内容并且 E 列为空白。

答案1

我认为您可能对日期列想得太多了,试图测试它的长度或“isblank”。Excel 将日期存储为数值,表示自 1900 年 1 月 0 日以来的整数和小数天数。因此,日期只是存储为数值,如 44785.746。因此,请检查它是否 > 0,而不是它有多长。

此外,如果您有 O365,那么您可以访问 EDATE() 函数,该函数可以更轻松地完成您想要做的事情。

您无需拆开日期,再用附加年份重新组合,等式就变成:

=IF($D3=“Forklift”,EDATE([@[Annual Validation Date][,24),EDATE([@[Annual Validation Date]],12))

然后将其合并到日期字段的测试中变得更加容易:

=IF([@[Annual Validation Date]]>0, trueStuffHere, “”)

其结果为:

=IF([@[Annual Validation Date]]>0, IF($D3=“Forklift”,EDATE([@[Annual Validation Date]],24),EDATE([@[Annual Validation Date]],12)), “”)

编辑:你可以用 LET 来简化这个:

=LET(
avd,[@[Annual Validation Date]],
IF(avd="","",IF($D2="Forklift",EDATE(avd,12),EDATE(avd,24)))
)

(我喜欢使用 alt-enters 将 LET 公式分成几行,以便于阅读)

答案2

最后做了一些研究,发现这个方法有效,没有引用错误:

=IF($F2="","",IF($D2="Forklift",EDATE($F2,12),EDATE($F2,24)))

相关内容