使用在我之前构建的代码返回通用年份值时遇到了一些问题。如果 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)))