Excel - 在没有 VBA 的情况下更改另一个单元格时更新单元格值

Excel - update a cell value when another cell changes without VBA

我想在用户更改另一个单元格时在一个单元格中设置一个时间戳,但没有 VBA,因为我希望它在无宏的情况下工作。我找到的所有解决方案都使用 Worksheet_Change VBA 代码,所以我需要一个没有 VBA.

的答案

示例:用户更新了A列,我想让B列记录用户更改A列时的时间戳。

这是解决问题的方法。它需要一个技巧,因为您必须打开迭代计算,因为这种方法利用了循环引用。因此,这仅适用于不需要迭代计算的工作簿。

  1. 打开迭代计算,但将最大迭代次数设置为 1。
  2. 在每行的 B 列中,时间戳所在的位置,使用此公式。因此对于第 2 行,单元格 B2 将包含: =IF(AND(A2<>"",C2<>A2),NOW(),IF(A2="","n/a",B2))

  3. 在 C 列(或任何其他未使用的列)中,输入此公式。因此对于第 2 行,单元格 C2 将包含: =IF(A2="","",IF(OR(B2="",AND(ISNUMBER(C2),A2=C2)),C2,A2))

就是这样。结果将如下所示。您当然可以将时间戳格式化为其他值:

| A B C | 1| User Entry Timestamp Prev | 2| dog 6:28:55 PM dog | 3| cat 7:17:42 PM cat | 4| n/a |

C 列存储 A 的值,以便在更改 A 时,公式知道 A 已更改值。如果用户输入 'dog' 单元格但将 'dog' 保留为值,则时间戳不会更改。当您更改其他行中的单元格 A 时,第 2 行的时间戳不会更改,这是某些捕获时间戳的 excel 解决方案的问题。