如果其他单元格值发生更改或添加,则在单元格中插入今天的日期

如果其他单元格值发生更改或添加,则在单元格中插入今天的日期

我有一张电子表格,其中有一列标有“状态日期”,该列与其他几个单元格位于同一行,有些单元格包含其他日期,有些单元格仅包含文本,还有一些单元格用于评估一组条件是否为真,在这种情况下,结果是“是”或“否”的答案,然后根据答案进行条件格式化以填充该单元格。

我希望能够对“状态日期”单元格值执行的操作是,如果该行中的任何其他单元格(包括包含基于其他单元格中的值的公式的单元格)发生更改(无论是由于编辑或添加/删除信息),则将其填充并“锁定”为今天的日期。它应该保持不变,直到稍后在同一行中发生其他更改。其他单元格值均不会在“状态日期”列上进行评估,因此如果需要将其移动到 A 列或 B 列以使公式起作用,或者可能需要使用 VBA 宏,那应该不是问题。

状态日期列示例

答案1

VBA 方法

只有在 Excel 后台编写一些非常基本的 VBA 才能真正实现这种类型的时间自动时间戳。例如,请查看此链接以开始使用:

https://docs.microsoft.com/en-us/office/troubleshoot/excel/run-macro-cells-change

不幸的是,VBA 宏并不总是一个选项,尤其是在文件共享的情况下。一些企业安全设置会完全阻止宏,更不用说如果您不熟悉基本编程,编写 VBA 代码会面临挑战。

数据验证时间戳方法

幸运的是,有两种方法可以在不使用 VBA 的情况下在 Excel 中添加时间戳。一种方法是使用列表类型的数据验证来“采样”当前时间。将一个引用单元格或命名范围设置为 =TODAY() 或 =NOW(),每次编辑任何单元格(即重新计算)时,它都会自动更新,因为 NOW/TODAY 是一个易失性函数。为日期输入单元格设置数据验证(在数据功能区上),选择列表并引用 TODAY/NOW 单元格。这将给出一个下拉列表,其中的时间反映了最近的重新计算。从下拉列表中选择后,它会复制时间值并将其“锁定” - 但您仍然需要自己选择它。

循环公式法

另一种方法需要更改 Excel 设置以允许循环公式/迭代计算,这并不理想,因为它是一个全局设置。但它确实运行良好,正如您在问题中所期望的那样。请参见此处:

https://howtoexcelatexcel.com/blog/create-a-timestamp-in-excel-with-formulas/

优点和缺点

VBA 方法非常可靠,最适合单个用户或用户熟悉根据安全设置允许宏的情况。需要一些基本的编码技能。此外,一旦执行宏,您的撤消历史记录通常会丢失。

数据验证方法实施起来非常简单,无需特殊设置或安全许可即可使用。但是,要求用户始终使用下拉单元格来添加时间戳(在对行进行其他更改之后)。

当您在其他单元格中输入数据时,循环公式方法会自动反映时间戳,但您必须启用全局 Excel 设置才能进行迭代,这会产生一些不直观的行为。虽然设置与工作簿一起保存,但如果您在此工作簿之前打开任何其他工作簿,则设置将重置为无迭代。打开此工作簿不会将其改回。您必须先打开此工作簿。此外,打开和保存其他工作簿也会将全局设置与这些文件一起保存,这可能会成为一个(小)问题。主要是在普通工作簿中输入循环公式时禁用错误报告。

Ps.快捷键方法

有时,最简单的方法从 IT 人员的角度来看并不是最理想的,但它对最终用户有用。您可以按以下快捷键之一将当前时间或日期作为值插入当前单元格中:

CTRL and ; (to insert the current date)
CTRL SHIFT and : (to insert the current time)

相关内容