Excel公式,当数据在同一行的另一个单元格中输入时,将日期/时间放在单元格中



希望有一种方法可以用公式完成,因为我将把它作为共享工作簿放在SharePoint上。

B列包含Tasks,而E列包含分配Task的日期和时间。是否有一个公式,当有人在列B中输入数据时,会自动在列E中输入当前日期和时间?

下面描述了另一种方法。

首先,在File - Options - Formulas - Enable Iterative Calculation下开启迭代计算。然后将最大迭代次数设置为1000。

对于这个公式来说,1000次迭代并不重要,但它可以防止excel陷入其他循环引用的无限循环。

完成后,使用以下公式:

=If(D55="","",IF(C55="",NOW(),C55))

一旦在单元格D55中输入任何内容(在本例中),则C55根据单元格格式填充今天的日期和/或时间。即使在单元格C55中输入了新数据,该日期/时间也不会再次更改,因此它显示了最初输入数据的日期/时间。

这是一个循环引用公式,因此每次打开工作簿时都会收到有关它的警告。无论如何,该公式可以工作,并且可以轻松地在工作表中的任何地方使用。

这可以通过一个简单的VBA函数来完成。Excel支持工作表更改子,它可以被编程为在每次触发时将日期放在相关列中。

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 2 And Target.Offset(0, 3).Value = "" Then
        Target.Offset(0, 3) = Format(Now(), "HH:MM:SS")
    End If
End Sub

一个简短的解释。下面的"if"语句检查两件事:(1)是否第二列发生了变化(列B),以及(2)单元格3列(列E)上当前是否为空。

If Target.Column = 2 And Target.Offset(0, 3).Value = "" Then

如果两个条件都为真,则使用NOW()函数将日期放入E列的单元格中。

Target.Offset(0, 3) = Format(Now(), "HH:MM:SS")

范围。抵消

范围。列

不确定这是否适用于具有函数的单元格,但我在其他地方发现了单个单元格条目的代码,并修改了它供我使用。如果操作得当,您无需担心在单元格中输入函数或每次打开文件时将日期更改为当天的日期。

  • 打开Excel
  • 按"Alt +季"
  • 双击要应用更改的工作表(列在左侧)
  • 复制/粘贴下面的代码
  • 调整Range(:)输入,使其对应于要更新的列
  • 调整Offset(0,_)输入以对应于您希望显示日期的列(在下面的版本中,我正在更新D列,我希望在F列显示日期,因此从D列开始的2列输入"2")
  • 如果工作簿中有其他工作表需要相同的代码,请重复上述步骤
  • 你可能不得不改变显示日期的列的数字格式为"一般",并增加列的宽度,如果它是显示"####"后,你更新的条目

复制/粘贴代码:


私有子Worksheet_Change(ByVal目标作为范围)

If Intersect(Target, Range("D:D")) Is Nothing Then Exit Sub
Target.Offset(0, 2) = Date

结束子


好运…

恐怕没有这样的功能。你需要一个宏来完成这个任务。

您可以在E列中这样做(记住设置自定义格式"dd/mm/yyyy hh:mm"):

=If(B1="";"";Now())

但是每次文件打开时它的值都会改变。

你需要通过宏保存这个值

可以使用If函数在要输入日期的单元格中写入以下公式:=如果( MODIFIED-CELLNUMBER & lt;> ",如果( CELLNUMBER-WHERE-TO-INPUT-DATE = ",现在(), CELLNUMBER-WHERE-TO-INPUT-DATE ), " ")

这是我的解决方案

=IF(H14<>"",NOW(),"")

最新更新