这个需求如果要用公式而不是宏来实现,关键在于两点:
需要记录下I列单元格修改前的数据,这个只能放在R列本身,因为如果用其他单元格保存,在I列变化时,那个单元格也同时变化了;
需要对自身进行判断,也就是迭代计算。
2可以通过设置迭代(次数1)来设置,那么,R3的公式就是:
=IF(I3="","",IF(ISERR(FIND("|",R3)),TEXT(NOW(),"yyyy-mm-dd hh:mm:ss")&"|"&I3,IF(--MID(R3,FIND("|",R3)+1,10)=I3,R3,TEXT(NOW(),"yyyy-mm-dd hh:mm:ss")&"|"&I3)))
效果如图,附件可下载参考
在工作簿VBA的Thisworkbook中写如下代码:
Dim x
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Column <> 2 Then Exit Sub '"2"指第2列输入数据
If Target.Row = 1 Then Exit Sub
If Target.Value = "" Then
Target.Offset(0, 4).Value = "" '"4"指在输入数据的单元格后第四列单元格里显示现在的时间
Exit Sub
End If
If Target.Value = x Then Exit Sub
If Target.Count > 1 Then Exit Sub
Target.Offset(0, 4) = Now
End Sub
这个只能用宏或自定义函数来实现。