如何在 Excel 中创建一个列来跟踪在相邻单元格中输入数据的时间?

如何在 Excel 中创建一个列来跟踪在相邻单元格中输入数据的时间?

我的 Excel 电子表格中有一些这样的列:

Name      Date       Time

我希望当用户在第一列(A 列)添加姓名时,“日期和时间”列会自动添加写入姓名的日期和时间。这样就可以记录在 A 列中进行输入的时间。

有没有办法可以自动填充这些数据?

答案1

(本答案基于文章 如何在 Excel 中快速插入日期和时间戳,您可以在其中通过屏幕截图找到更多信息。)

使用 Excel 公式,几乎不可能自动插入在工作表重新计算时不会改变的时间戳。但是,存在一种解决方法,即使用公式,同时滥用 Excel 的一个公式计算功能。

此功能被滥用是 循环引用,即以永无止境的方式编写一系列计算。例如,设置单元格A2=A1+A2将导致单元格 A2 的值不断增加,只要该值继续重新计算。

步骤 1:启用有限迭代计算

  • 打开 Excel文件 > 选项 > 公式
  • 在“计算选项”下,启用“启用迭代计算”并将最大值设置为较低值(1可以)

现在 Excel 将重新计算循环引用,但在一定次数的计算后将停止。

步骤 2:输入循环公式

假设要在 A 列中输入值,从 A2 开始,时间列在 B 列。

公式如下:=IF(A2<>"",IF(B2<>"",B2,NOW()),"")

当在 A 列输入值时,时间戳会自动出现在相邻的 B 列单元格中,并且在稍后修改 A2 单元格时不会更新。

在此处输入图片描述

修改日期的替代方案

上述方法适用于将 B2 列设置为 A2 中输入第一个值的时间。

变体公式适用于每次修改 A2 列时更新时间的情况。

使用以下公式:=IF(A2<>"",IF(AND(B2<>"",CELL("address")=ADDRESS(ROW(A2),COLUMN(A2))),NOW(),IF(CELL("address")<>ADDRESS(ROW(A2),COLUMN(A2)),B2,NOW())),"")

在此处输入图片描述

答案2

您可以使用 VBA 执行此操作,如下所示:

将此代码放入您正在处理的工作表的工作表代码中:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim MyRnge As String, MyTime As String, mydate As String
    MyRnge = Range("B2:B" & Rows.Count).Address
    If Not Intersect(Target, Range(MyRnge)) Is Nothing Then
        mydate = Format(Date, "Long Date")
        MyTime = Format(Now, "hh:mm:ss")
        Target.Offset(0, 1).Value = mydate & " " & MyTime
    End If
End Sub

将 MyRnge 更改为您想要覆盖的范围。更改日期和时间的格式以适应更改偏移量(从 1 开始)以反映您希望日期/时间出现的列。在选定的列中输入事件:

在此处输入图片描述

相关内容