我有两列(1) DATE/TIME COMPLETED (1)DATE/TIME COMPLETED (2)状态。
(1)有一个=IF(B1="COMPLETED", NOW(), "")
公式
注意:我已经更改了B1、B2等。与行号相对应。
这意味着如果(2)状态为“已完成”,则应在第(1)列中显示当前日期/时间,否则应显示为空。
但当我完成一个单元格时,所有其他状态为已完成的单元格也会验证/刷新,这会用相同的日期和时间值标记所有单元格。
如何才能只更新已更新的单元格的状态,而不更改状态中的其他单元格?
发布于 2016-07-13 08:32:18
在这种情况下,你真的不应该依赖NOW()
。Excel重新验证的原因有很多。您可以创建一个获取当前时间并将其设置为文本的宏,也可以手动执行相同的操作。
或者,要将现有公式转换为文字值,请遵循this guide。应该在任务完成后立即对每一行执行此操作,这样Excel就不会有机会错误地重新评估它。
发布于 2016-07-13 08:54:24
now()给出了处理公式时的当前时间。由于它是一个动态值,它将每次更新为当前日期/时间。
我发现能够自动执行此操作的唯一方法是使用VBA (宏):
Private Sub Worksheet_Change(ByVal Target As Range)
' Assuming column 2 is actually columns "B". In case it's not, change target.column to the right column number
If Target.Column = 2 And UCase(Target.Text) = "COMPLETED" Then
'Assuming the datetime field goes to the column to the left of the above column.
Cells(Target.Row, Target.Column - 1) = Now
Else
If Target.Column = 2 Then Cells(Target.Row, Target.Column - 1).Clear
End If
End Sub
希望这能解决你的问题。
https://stackoverflow.com/questions/38346416
复制