自动记录货物的入库时间,并且不会实时地自动更新时间,比如上午9点01分录入的入库信息,显示为9点01分,当10点再打开文件时,录入时间不会自动更新到10点。
某物流企业在进行货物入库记录时,想要设置一个自动记录货物具体的入库时间的公式。以便于在后续需要的时候,可以直接获知所有货物单号的最初的记录时间,也就是入库时间。
即当在B列输入货物信息时,A列会自动显示当前录入信息的时间。

具体的效果如下动图所示:

根据题意,我们首先选定要使用的函数,在这个包含时间和条件的场景,自然是优先考虑使用if+now函数的嵌套公式。
当B列输入货物信息,也就是B列单元格不为空时,则在A列显示当前时间。
那么我们可以输入公式:
=IF(B2="","",NOW())

now函数是返回当前的实时时间,它的结果会即时变动,只要在表格中进行任意编辑或修改清除等操作,都会更新now函数的结果。
我们从下面动图演示的情形可以看到,当在表格中输入了一个内容,输入的if函数公式结果出现了变动,本来是52分,变成了当前时间53分。

所以以上公式并不能满足我们的需求,因为我们要记录货物入库的具体时间,并不想这个时间会随着时间的变动而更新。
那么我们必须从另一个方式来完成任务了。
现在再次输入一个if+now函数的嵌套公式:
IF(A2="",NOW(),A2)

这个公式是在A2单元格中输入的,但公式中又引用了A2单元格,那这是一个典型的循环引用。
在循环引用的场景中,要使循环引用生效,则必须在表格文件选项中进行迭代计算的设置。
所谓迭代计算,是计算机领域的一个术语,在excel中,我们可以直接理解为循环计算。
如何设置迭代计算,比较简便。
点击文件--更多--选项--公式--勾线启用迭代计算。

不同的excel版本其设置的路径可能不同,但基本都在公式的设置选项内。
设置完迭代计算,我们回到表格,当在B列输入货物信息时,A列会自动记录输入货物信息的具体时间,而且它不会随着时间变动而进行更新。

IF(A2="",NOW(),A2)
if函数第3参数 的结果。
而后面这个if表达式的含义是,当A2等于空值时,返回now函数的结果,否则返回A2的值。
那我们连起来理解,当在B2录入货物信息,即B2不等于空值,返回if函数的第3参数结果,即后面这个if函数的结果。而A2本身就是空值,那么它将返回now函数的值,即当前时间。
当B2不等于空值,则A2等于now函数的值。
最后我们再进行公式的循环计算,此时B2不是空值,A2也不是空值,因此if函数会返回A2的值,即值保持不变。
解释的字句越多,反而感觉越混乱,如果还不清楚的话,可以直接记住它的公式和迭代计算的设置,遇到相同场景,直接应用即可!