Excel - 我只想在第一个单元格发生更改时将值从一个单元格复制到另一个单元格

Excel - 我只想在第一个单元格发生更改时将值从一个单元格复制到另一个单元格

我在 D 列中有一组值,我想自动更新到 E 列,但前提是 D 列中的值发生更改。否则,我希望 E 列中的单元格为空白 - 这可能吗??

答案1

您的问题陈述有点问题。一个单元格仅保存一个值,而不是任何过去的值。想要用公式检测单元格“变化”是不可能的*,因为您需要将其与过去的值进行比较才能知道它是否发生了变化。即使您可以将其与过去的值进行比较,您应该回溯多久?E 中的单元格为空白的标准是什么?从空白工作簿开始以来,D 中的所有单元格基本上都发生了变化,所以 E 永远不应该为空白?

答案当然是要有一个参考时间点。根据评论中的建议,您可以在另一列中记录过去的值,但随后由用户手动确定何时复制和粘贴这些“过去”的值,然后再在 D 中进行更改 - 修复参考时间戳。

现在,如果您愿意,您可以使用 VBA 宏自动执行此“修复”,例如,如果您按下快捷键,或者当您关闭文件时,或者在一周/一个月/一年结束时等,更新引用列。在 VBA 中,您甚至可以添加在您编辑单元格或单元格范围后立即触发的代码,然后通过撤消缓冲区读取旧值,并将其存储在引用列中。请参阅此处了解令人痛苦的细节:

https://stackoverflow.com/questions/4668410/how-do-i-get-the-old-value-of-a-changed-cell-in-excel-vba

Ps.impossible*:没有什么是真正不可能的,但可能的事情很少是你想要的。

在 Excel 中,有一个公式可以确定最后编辑了哪个单元格:

=CELL("address")

例如,您可以在 E2 中说:

=IF(CELL("address") = "$D$2", D2, "")

只要您不更新任何其他单元格或在选择另一个单元格时引起重新计算,它将仅在 E2 中显示 D2 的新值。 它不是万无一失的,但很有趣。 它有效地帮助您将时间戳固定为仅最后一次编辑。

相关内容