答案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
是一个逻辑测试,用于测试目标单元格是否有任何输入。它返回TRUE
或FALSE
。其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 列中。