经常使office的是不是会遇到:表单插入时间每次还需要手动输入,非常的繁琐;其实掌握了这种方式,仅需要输入在相应列中输入文字,时间列便会自动加载当前时间并保存,并且的时间不会随意改变……、

Excel中系统自带的RAND、TODAY和NOW等函数都属于易失性函数,简单地说就是使用这些函数得到的结果是靠不住的,会随着我们按一次F9键,执行一次其他运算,甚至在自动重算开启时在空白单元格中录入内容都有可能会改变这些函数的返回结果。

这里我们以NOW函数为例,告诉大家如何快速地记录当前时间而又不会变化。

易失性函数的弊端

在前面摘要部分我们已经提到了,易失性函数会随着我们的一些操作而发生不必要的变化,这里我们举个例子:

比如有位客服人员需要记录下客户投诉的原因以及投诉的具体时间,于是制作了下表并写好了公式:

结果发现虽然增加A列的新数据可以在B列自动得到当前时间,但只要对表内任意单元格做了修改,所有B列的时间全都自动重算,不再是当时记录的时间了。但是我们又不能将自动重算的命令关闭,那该如何解决呢?

方法1:借助数据验证功能

首先我们选择一个旁边的空白单元格,在里面写好NOW函数得到当前时间:

接下来我们选中C列要录入时间的单元格,打开【数据】选项卡下的【数据验证】命令(2010及以前的版本叫做【数据有效性】),选择允许值为“序列”,来源引用刚刚写了NOW函数的单元格。

接下来每次记录了新的投诉原因后,直接在C列的下拉菜单处选择菜单里的当前时间即可。

方法2:借助迭代计算功能

若觉得刚才的方法要手动选择菜单,还不够完美的话,这还有另一种方法:先清除A列已经录入的数据,在D3单元格输入公式:=IF(A3="","",IF(D3="",NOW(),D3))

当按Enter确认录入时,系统会提示我们此处有循环引用。因为在D3单元格的公式里引用了D3。不过没关系,此处先暂时点击确定,单元格中还没有结果出现。

接下来,我们在【文件】选项卡下找到【选项】,选择【公式】菜单,勾选“启用迭代计算”,点击“确定”。

这时,我们在A3单元格录入投诉原因,D3单元格中自动出现了结果,只是格式还不是我们需要的日期时间格式。

我们将D3单元格的公式复制下来,设置D列的单元格格式为自定义格式:“yyyy/mm/dd hh:mm:ss”。

然后我们就可以看到D3单元格出现了正确的结果。后续只要增加新的投诉原因记录,D列都会自动生成当前时间,还不会变化,非常方便。

最后总结一下,本文中我们给大家介绍了易失性函数的弊端,并以NOW函数获取当前时间为例,分别应用数据验证法和迭代计算法改良了NOW函数,使其结果不会自动发生不必要的变化。这些方法大家也可以扩展到其他易失性函数的使用中,当然还可以用VBA代码来解决类似问题,这里我们就不详细展开啦。