Excel 当包含公式的单元格的值第一次更新时,如何设置时间戳?

Excel 当包含公式的单元格的值第一次更新时,如何设置时间戳?,excel,vba,excel-formula,timestamp,worksheet,Excel,Vba,Excel Formula,Timestamp,Worksheet,我有一本有三张工作表的工作簿 工作表1包含工作表2和工作表3的汇总。工作表1从不手动更新,因为数据/信息在工作表2/3中更新,并通过单元格中的vlookup公式填充到工作表1中 我想要一个时间戳,当工作表1中D列中的单元格第一次包含1%-99%的百分比时 我希望在输入第一个数据后,此时间戳永远不会更改 我还希望时间戳显示在G列中 每当工作表1中D列中的单元格首次包含100%时,我需要另一个时间戳 我希望在输入第一个数据后,此时间戳永远不会更改 我还希望在H列中打印时间戳 这仅在手动更改单

我有一本有三张工作表的工作簿

工作表1包含工作表2和工作表3的汇总。工作表1从不手动更新,因为数据/信息在工作表2/3中更新,并通过单元格中的vlookup公式填充到工作表1中

我想要一个时间戳,当工作表1中D列中的单元格第一次包含1%-99%的百分比时

  • 我希望在输入第一个数据后,此时间戳永远不会更改
  • 我还希望时间戳显示在G列中
每当工作表1中D列中的单元格首次包含100%时,我需要另一个时间戳

  • 我希望在输入第一个数据后,此时间戳永远不会更改
  • 我还希望在H列中打印时间戳
这仅在手动更改单元格时才会出现。由于工作表是从公式中填充的,因此它没有捕捉到更改

Private Sub Worksheet_Change(ByVal Target As Range)

Dim myTableRange As Range
Dim myDateTimeRage As Range
Dim myUpdatedRange As Range

Set myTableRange = Range("D1:D314")

If Intersect(Target, myTableRange) Is Nothing Then Exit Sub

Set myDateTimeRage = Range("N" & Target.Row)
Set myUpdatedRange = Range("O" & Target.Row)

If myDateTimeRage.Value = "" Then
    myDateTimeRage.Value = Now
End If

myUpdatedRange.Value = Now

End Sub

下面是一个使用
工作表\u Calculate

Private Sub Worksheet_Calculate()
Dim myTableRange As Range

Set myTableRange = Range("D1:D30") 'Change the range as needed

    For Each cel In myTableRange 
    'when a cell is changed in the range due to a formula, the code loops through and checks all the cells for a change. 

        If cel.Value >= 0.01 And cel.Value <= 0.99 And cel.Offset(, 3).Value = "" And cel.Offset(, 4).Value = "" Then 
       'If the timestamp is not for columns G and H, change the offset(,3) to 10, and offset(,4) to 11

            cel.Offset(, 3).Value = Now

        ElseIf cel.Value = 1# And cel.Offset(, 4).Value = "" Then
        'Test for 100%

            cel.Offset(, 4).Value = Now
        End If

    Next cel
End Sub
Private子工作表_Calculate()
Dim myTableRange作为范围
设置myTableRange=Range(“D1:D30”)'根据需要更改范围
对于myTableRange中的每个cel
'当某个单元格由于公式而在范围内发生更改时,代码将循环并检查所有单元格是否有更改。

如果cel.Value>=0.01,并且cel.Value如果您正在处理公式,则需要使用
工作表\u计算
,而不是
工作表\u更改
。您必须在工作集2+3中查找更改;如果它们更改,请查看工作表1中的单元格是否包含您所需的内容,然后设置时间戳。如果我使用工作表,请计算代码不起作用。您是否尝试在文本的
列G和H中添加时间戳,或在代码的
列N和O中添加时间戳?此代码非常有效!我想添加一条语句,首先在G和H列中检查现有数据。如果存在前一天运行代码并加上时间戳的现有日期,我不希望上面的代码运行并覆盖这些现有日期。是否可以将此代码嵌套到另一个else if语句中?