2

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

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

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

如果可能的话,我正在寻找一个内联函数。

谢谢

4

5 回答 5

5

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

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

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 也会被删除。时间戳不会自动更新。

于 2012-12-10T16:49:21.700 回答
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)中的任何一个,否则时间戳不会自动更新。

于 2012-12-11T07:19:33.700 回答
1

文件>选项>公式>检查手动计算>取消选中“保存前重新计算工作簿”。如果需要,还检查启用迭代并将最大迭代设置为 1,如上所述。

于 2016-12-05T18:12:20.407 回答
0

只需将默认迭代更改为1,因此它会在停止之前重新计算一次。

去这个:

  1. 办公室按钮
  2. Excel 选项
  3. 公式
  4. 迭代
于 2015-10-26T18:52:13.657 回答
-1

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

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

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

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

于 2021-08-03T20:36:23.823 回答