【问题标题】:excel formula to get the latest timestamp of latest updated cell in a particular rowexcel公式获取特定行中最新更新单元格的最新时间戳
【发布时间】:2015-04-23 09:49:29
【问题描述】:

每次更新特定行中的任何单元格时,我都需要一个 MS Excel 中的公式来获取最后更新的时间戳。我正在使用
=if($2:$2="","",NOW())
但是当一个单元格更新时,每个单元格甚至是其他单元格具有相似公式的行将使用最新的时间戳进行更新。可能是什么问题?

我只需要公式而不是宏/excel 程序。

【问题讨论】:

  • 据我了解,它必须在 VBA 中。由于每次更新单元格时,所有公式都会因为 Excel 计算选项而运行。因此,除非您使用 VBA,否则我认为这是不可能的。但是如果我错了请纠正我
  • @Sam - 你没看错。 NOW() 是一个 volatile 函数,只要工作簿中的任何值发生更改,它就会重新计算。除非公式的结果恢复为其基础值(删除公式),否则NOW() 函数将继续重新计算。通常这是使用Worksheet_Change 事件宏来处理的。

标签: excel excel-formula excel-2010 excel-2007


【解决方案1】:

您需要在工作表更改事件中创建一个 VBA 宏。根据更改单元格的行,您可以轻松地将时间戳作为字符串输入到您的行中。 没有公式可以满足您的要求

要获取工作表更改事件,请转到文件,然后转到选项。然后转到自定义功能区。选中右侧列中开发人员旁边的框。在功能区中新添加的开发人员选项卡下,选择最左侧的 Visual Basic。在打开的编辑器左侧的项目窗口中找到您的工作表。您可能需要展开您的工作簿和一个名为 Excel 对象的文件夹。双击工作表以获取其代码。将打开一个窗口,顶部有两个下拉菜单。在左侧,转到工作表。在右侧,选择更改。在Private Sub Worksheet_Change(ByVal Target As Range)End Sub 之间,您可以添加在工作表更改时将运行的代码。

这是您将使用的代码,将 Cells() 中的“5”替换为您要在其中放置时间戳的列。

Dim i As Integer
i = Target.Row

Dim t As String
t = VBA.Now

Cells(i, 5) = t

【讨论】:

    【解决方案2】:

    如果包含时间戳的单元格是 B3,而要监视的单元格是 C3,则公式为: =IF(C3"",IF(B3="",NOW(),B3),"")

    【讨论】:

    • 这无济于事,就像我们在上面的 cmets 中所说的那样,他们把它放在任何地方。 NOW() 函数将在每次进行任何更改时更新
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-09
    • 1970-01-01
    • 1970-01-01
    • 2018-05-20
    • 2014-04-07
    • 1970-01-01
    • 2021-12-27
    相关资源
    最近更新 更多