我有一个excel公式=IF(NOT(ISBLANK(A2)), TEXT(NOW(), "mm/dd/yyyy HH:ss"),"")
我的问题是:当然,每次打开此工作表时,它都会更新与最新时间戳关联的单元格值。如果它已经存在,我不希望这个时间戳改变。
我想要的是某种方式:如果A2不是空白且最近没有更新,那么就不要更新其他更新的时间戳。
如果可能,我正在寻找内联函数。
由于
答案 0 :(得分:5)
您可以使用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也将被删除。时间戳不会自动更新。
答案 1 :(得分:2)
如果编辑了(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)中的任何一个,否则时间戳不会自动更新。
答案 2 :(得分:1)
档案>选项>配方>检查手动计算>在保存之前取消选中'重新计算工作簿'。 如果需要,还要检查启用迭代并将最大迭代次数设置为1,如上所述。
答案 3 :(得分:0)
只需将默认迭代更改为1
,即在停止前重新计算一次。
转到此处:
答案 4 :(得分:-1)
好的 - 所以我意识到这个线程很古老。
但是,我遇到了一个 excel 公式化的方法,我想我会分享:
单元格 A1 = 具有完整、不完整数据验证列表的单元格 单元格 A2 = IF(A1="Complete",IF(A2="",NOW(),A2),"")
迭代需要打开 - 所以要考虑其他潜在的循环引用 - 但这将返回一个空白单元格,直到您将 A1 翻转到“完成”。完成后 - 它会更新 A2。只要您不更改 A1 的状态,A2 就会保持该状态。
您还可以将触发器更改为其他字段等,在我的情况下,我将其保持为不完整状态,直到表单准备好,然后将其翻转为完成,时间戳会固定。