我有一个excel公式=IF(NOT(ISBLANK(A2)), TEXT(NOW(), "mm/dd/yyyy HH:ss"),"")
我的问题是:当然,每次我打开这张表时,它都会更新与最近时间戳关联的单元格值。如果它已经存在,我不希望这个时间戳改变。
我想要的是某种方式:如果 A2 不是空白并且最近没有更新,那么不要更新时间戳,否则更新。
如果可能的话,我正在寻找一个内联函数。
谢谢
我有一个excel公式=IF(NOT(ISBLANK(A2)), TEXT(NOW(), "mm/dd/yyyy HH:ss"),"")
我的问题是:当然,每次我打开这张表时,它都会更新与最近时间戳关联的单元格值。如果它已经存在,我不希望这个时间戳改变。
我想要的是某种方式:如果 A2 不是空白并且最近没有更新,那么不要更新时间戳,否则更新。
如果可能的话,我正在寻找一个内联函数。
谢谢
您可以使用 VBA 宏执行此操作:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Row = 2 Then
If Target.Value = "" Then
Cells(2, 2).Value = ""
Else
Cells(2, 2).Value = Format(Now, "mm/dd/yyyy HH:mm:ss")
End If
End If
End Sub
如果你在 A2 单元格中写了一些东西,那么一个时间戳将被写入到单元格 B2 中,当你删除 A2 时,B2 也会被删除。时间戳不会自动更新。
如果(A2:C2 或 E3:F4)中的任何单元格被编辑,我想你想在一系列单元格(比如 A9:C20 和 D11:E12)中记录编辑时间。
你可以这样做:
右键单击工作表选项卡并选择“查看代码”并粘贴以下代码:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A2:C2,E3:F4")) Is Nothing Then Exit Sub
Range("A9:C20,D11:E12").Value = Now()
Range("A9:C20,D11:E12").NumberFormat = "mm/dd/yyyy hh:mm:ss"
End Sub
除非再次编辑(A2:C2 或 E3:F4)中的任何一个,否则时间戳不会自动更新。
文件>选项>公式>检查手动计算>取消选中“保存前重新计算工作簿”。如果需要,还检查启用迭代并将最大迭代设置为 1,如上所述。
只需将默认迭代更改为1
,因此它会在停止之前重新计算一次。
去这个:
好的 - 所以我意识到这个线程很古老。
但是,我遇到了一个我认为我会分享的 excel 公式化方法:
单元格 A1 = 具有完整、不完整数据验证列表的单元格 A2 = IF(A1="Complete",IF(A2="",NOW(),A2),"")
需要打开迭代 - 所以要考虑其他潜在的循环引用 - 但这将返回一个空白单元格,直到您将 A1 翻转为“完成”。完成此操作后,它将更新 A2。只要您不更改 A1 的状态,A2 就会保持该状态。
您还可以将触发器更改为其他字段等,在我的情况下,我将其保持在不完整状态,直到表格准备好,然后将其翻转为 Complete 并且时间戳记。