Excel now()不应更新现有时间戳

时间:2012-12-10 16:27:25

标签: excel excel-formula

我有一个excel公式=IF(NOT(ISBLANK(A2)), TEXT(NOW(), "mm/dd/yyyy HH:ss"),"")

我的问题是:当然,每次打开此工作表时,它都会更新与最新时间戳关联的单元格值。如果它已经存在,我不希望这个时间戳改变。

我想要的是某种方式:如果A2不是空白且最近没有更新,那么就不要更新其他更新的时间戳。

如果可能,我正在寻找内联函数。

由于

5 个答案:

答案 0 :(得分:5)

您可以使用VBA宏执行此操作:

  1. 打开VBA编辑器(工具>宏> Visual Basic编辑器)
  2. 在左侧,右键单击Sheet1并选择查看代码
  3. 将以下内容复制到编辑器中:

  4. 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,即在停止前重新计算一次。

转到此处:

  1. 办公室按钮
  2. Excel选项
  3. 公式
  4. 迭代

答案 4 :(得分:-1)

好的 - 所以我意识到这个线程很古老。
但是,我遇到了一个 excel 公式化的方法,我想我会分享:

单元格 A1 = 具有完整、不完整数据验证列表的单元格 单元格 A2 = IF(A1="Complete",IF(A2="",NOW(),A2),"")

迭代需要打开 - 所以要考虑其他潜在的循环引用 - 但这将返回一个空白单元格,直到您将 A1 翻转到“完成”。完成后 - 它会更新 A2。只要您不更改 A1 的状态,A2 就会保持该状态。

您还可以将触发器更改为其他字段等,在我的情况下,我将其保持为不完整状态,直到表单准备好,然后将其翻转为完成,时间戳会固定。