如何在输入数据后冻结 =today() 函数?

11
我想在Excel表格中使用=TODAY()函数。然而,一旦数据已经输入到该行,我希望它的日期永远不会改变(有效地捕捉该行数据添加的日期)。
这将在表格中的每一行上使用,因此随着数据在行中输入,将捕获每个日期。
这是否可能,我该如何做?
编辑 - pnuts,这与this问题不同。我不想使用按钮,而是要使用单元格公式。

TODAY函数是易变的,在工作簿的每个计算周期中都会重新计算。如果您想要一个时间戳,请考虑使用VBA Worksheet_Change事件宏,在该行数据被添加或编辑时自动将静态日期或现在时间放入列中。这个网站上有很多例子。在Excel论坛中搜索timestamp。如果遇到问题,请回复(包括您自己的努力)。 - user4039065
2个回答

28

与其输入公式

=TODAY()

触摸 Ctrl + ;

代替。这将在单元格中放置一个“冻结”的日期。


4
我之前不知道那个特定的快捷键,感谢你指出来。试用后,我发现 Ctrl+Shift+; 可以让时间暂停,这也很不错。 - John Coleman
有没有快捷方式可以同时添加日期和时间? - ninbit
@ninbit 没有任何快捷方式 - Gary's Student
@ninbit(我以前常用这种方法...,当我需要文本时)但不是在Excel中。--> 在记事本中按F5键。| 至于Excel,公式是 now()。据我所知,没有键盘快捷键。 - p._phidot_
@ninbit 按下 Ctrl + ;,然后按下 空格键,接着再按下 Ctrl + Shift + ; 似乎可以解决问题。 - gargoylebident

7
Gary学生的答案对于这个具体的问题是最好的,但是如果你愿意使用循环引用,也可以在不使用VBA的情况下冻结易失的工作表函数。在文件\选项\公式中勾选启用迭代计算,然后假设A1目前为空,请输入。
=IF(A1 = 0,TODAY(),A1)

Excel默认格式处理不知道如何将其格式化为日期-因此您需要单独执行此操作。比 Ctrl + ; 更麻烦,但可能还有其他用例。

免责声明:我明确测试了这个技巧防止重新计算 Now()而不是 Today()。我不想等到午夜来测试 Today()

在编辑时:这里有一个有趣的用例。假设您有一个整个空单元格范围,其中A1是左上角单元格。当该范围被突出显示时,输入公式

=IF(A1 = 0, RAND(), A1)

按下 Ctrl + Enter 键。然后整个范围就会填充不同但固定的随机值。


4
不需要检查A1的值,条件可以直接为TRUE:IF(TRUE,TODAY(),0) - Valid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接