当我在另一个单元格中写入并按回车键时,如何自动在单元格中插入 =now() 函数

当我在另一个单元格中写入并按回车键时,如何自动在单元格中插入 =now() 函数

我想知道如何:

=now()每当我在 A 列中的相应单元格(A1、A2、.. Aν)中写入内容时,Excel 的 B 列中就会自动显示该函数,仅显示在每个单元格(B1、B2、.. Bν)中。

在此处输入图片描述

答案1

新答案

如果你想要一个不重新计算的时间戳,你需要使用一种称为循环公式.这基本上允许细胞根据其自身内容执行功能。

您需要通过转到文件 > 选项 > 公式,然后勾选来启用此功能Enable iterative calculation。将迭代次数更改为1。按确定并保存您的工作表。

=IF(A1<>"",IF(B1="",NOW(),B1),"")

解释:

第一个IF类似于原始答案中的那个。它检查是否A1为空。<>是逻辑运算符,意思是not equal to。第二个IF检查自身,并在输入内容时运行A1。如果B1为空,则输入当前日期和时间,否则输出现有内容(原始时间戳)。


原始答案

您可以在 B1 中尝试此操作:

=IF(ISBLANK(A1),"",NOW())

解释:

ISBLANK是一个逻辑测试,用于测试目标单元格是否有任何输入。它返回TRUEFALSE。其IF结构使得如果目标单元格为空白,它将输出一个空字符串。如果在其中输入了任何输入,A1它将输出当前时间和日期。

需要注意的是,每次重新计算工作表时,输出的值NOW()都会变为当前时间。


参考:

答案2

在所有事情上都使用 VBA 并不总是明智的,但这是一个很好的选择,特别是如果你想要跟踪某一行何时被更改,而不仅仅是第一次输入时。将以下内容插入到带有时间戳列的工作表的代码中:

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    Dim intersection As Range
    ' Change A:A,C:E to whatever range you want to watch.
    Set intersection = Application.Intersect(Target, Me.Range("A:A,C:E"))
    If Not intersection Is Nothing Then
        Dim r As Range
        For Each r In intersection.Rows
            ' Change B1 to whichever column is the timestamp.
            r.EntireRow.Range("B1").Value = Now
        Next
    End If
    Application.EnableEvents = True
End Sub

在此示例中,监视 A、C、D 和 E 列的变化,当发生变化时,当前日期和时间将插入到同一行的 B 列中。

相关内容