需要计算单元格日期,但前提是日期大于或等于特定日期

需要计算单元格日期,但前提是日期大于或等于特定日期

我正在尝试为某一列[Task Status]更改为完成时创建日期戳。以下代码在“状态”单元格更改为完成时成功创建日期戳。

=IF([Task Status])= "Complete",TEXT(NOW(),"mm/dd/yyyy"))

问题是,所有列[Task Status]单元格都已完成,将显示实施公式的日期。我正在寻找一种解决方案,可以为以后的所有日期创建日期戳,并将过去的日期留空。

我已经尝试过这个,但是没有用:

=IF(NOW()<="7/31/2020","",IF([Task Status]="Complete",TEXT(NOW(),"mm/dd/yyyy")))

答案1

正如FlexYourData所指出的,使用NOW()将意味着它创建的所有日期/时间都会在每次对电子表格进行更改(几乎任何更改)时发生变化,因为NOW()每次电子表格重新计算时都会重新计算。因此,每一天的日期都会不同,但一整天的时间也会发生变化。

您需要采用不同的方法来获得您几乎肯定希望的结果。

也就是说,公式中遇到的具体问题很容易解决。Excel 将日期和时间视为数字。每一天都比前一天高一个整数,因此今天 2020-08-02 是 44045,明天将是 44046。时间也在增加,但在值的小数部分。因此,此刻是 44045.33844,此刻是 44045.33876,依此类推,直到达到 44046 并继续增加。

您使用的表达式NOW()<="7/31/2020"中的日期是字符串值,而不是数字。字符串的数值始终为 0。因此,您要求 Excel 查看(我们知道它将是一个大于 0 的数字)是否<= 0。自然,它会说不是,并根据该测试的结果NOW()参数采取行动。FALSE

如果你DATEVALUE()在函数中“包装”该日期,您的公式将按预期工作:

=IF(NOW()<=DATEVALUE("7/31/2020"),"",IF([Task Status]="Complete",TEXT(NOW(),"mm/dd/yyyy")))

这就是全部了。

解决如何NOW()不稳定且不断变化又是另一回事。

相关内容