閱: 3689 | 回: 0
等級(jí):初學(xué)者
-
積分:0
-
財(cái)富值:0.00
-
身份:普通用戶
自動(dòng)記錄單元格數(shù)據(jù)的輸入日期和時(shí)間
有時(shí)希望在Excel某個(gè)單元格中輸入內(nèi)容時(shí),在另外的單元格中自動(dòng)記錄該單元格輸入時(shí)的日期和時(shí)間,例如在A列錄入數(shù)據(jù)后,在B列同行對(duì)應(yīng)的單元格中自動(dòng)記錄日期和時(shí)間。這時(shí)可用下面的方法來(lái)實(shí)現(xiàn):
方法一:使用公式
1.打開(kāi)“迭代計(jì)算”選項(xiàng)。
由于公式要引用單元格自身,造成循環(huán)引用,必須打開(kāi)“迭代計(jì)算”選項(xiàng),否則Excel會(huì)提示“Microsoft Office Excel 不能計(jì)算該公式……,從而造成循環(huán)應(yīng)用。……”的提示。
Excel 2003:?jiǎn)螕簟肮ぞ摺x項(xiàng)→重新計(jì)算”,勾選“迭代計(jì)算”。
有時(shí)希望在Excel某個(gè)單元格中輸入內(nèi)容時(shí),在另外的單元格中自動(dòng)記錄該單元格輸入時(shí)的日期和時(shí)間,例如在A列錄入數(shù)據(jù)后,在B列同行對(duì)應(yīng)的單元格中自動(dòng)記錄日期和時(shí)間。這時(shí)可用下面的方法來(lái)實(shí)現(xiàn):
方法一:使用公式
1.打開(kāi)“迭代計(jì)算”選項(xiàng)。
由于公式要引用單元格自身,造成循環(huán)引用,必須打開(kāi)“迭代計(jì)算”選項(xiàng),否則Excel會(huì)提示“Microsoft Office Excel 不能計(jì)算該公式……,從而造成循環(huán)應(yīng)用。……”的提示。
Excel 2003:?jiǎn)螕簟肮ぞ摺x項(xiàng)→重新計(jì)算”,勾選“迭代計(jì)算”。

Excel 2007/2010/2013:?jiǎn)螕簟癘ffice按鈕(文件)→選項(xiàng)→公式”,在“計(jì)算選項(xiàng)”區(qū)域勾選“啟用迭代計(jì)算”。
“最多迭代次數(shù)”可保持默認(rèn)的“100”。
2.在B1單元格中輸入公式:
=IF(A1="","",IF(B1="",TEXT(NOW(),"yyyy-m-d h:mm:ss"),B1))
然后拖動(dòng)填充柄向下填充公式到所需的位置。
這樣,當(dāng)在A列輸入數(shù)據(jù)時(shí),B列對(duì)應(yīng)的單元格會(huì)自動(dòng)記錄當(dāng)前的日期和時(shí)間。
說(shuō)明:
1.上述公式雖然能記錄A列單元格中第一次輸入的日期和時(shí)間,但直接更改A列單元格內(nèi)容后,該公式并不能記錄最后一次輸入的日期和時(shí)間。要記錄A列單元格最后輸入的日期和時(shí)間,可先按Delete鍵刪除A列單元格內(nèi)容后再次輸入。
2.重新打開(kāi)Excel后,上述“迭代計(jì)算”選項(xiàng)會(huì)自動(dòng)取消。如果啟動(dòng)Excel后打開(kāi)了一個(gè)未設(shè)置該選項(xiàng)的工作簿,再次打開(kāi)已設(shè)置“迭代計(jì)算”選項(xiàng)的工作簿時(shí),Excel仍會(huì)給出循環(huán)引用的提示,此時(shí)重新設(shè)置“迭代計(jì)算”選項(xiàng)即可。
方法二:用VBA
下面的VBA代碼利用“Worksheet_Change”事件來(lái)實(shí)現(xiàn)自動(dòng)記錄日期時(shí)間的目的。在Excel中按Alt+F11,打開(kāi)VBA編輯器,在“工程”窗口中雙擊所需的工作表,在代碼窗口中根據(jù)需要分別粘貼下面的代碼。
1.記錄A列單元格第一次輸入的日期和時(shí)間:
Private Sub Worksheet_Change(ByVal Target As Range)
'在B列單元格中記錄A列同行單元格第一次輸入的日期和時(shí)間
Dim rCell As Range
With Target
If .Count = 1 Then
If .Column = 1 And .Offset(0, 1) = "" Then
.Offset(0, 1).NumberFormat = "yyyy-m-d h:mm:ss"
.Offset(0, 1) = Now
End If
Else
If Intersect(Target, Range("A:A")) Is Nothing Then End
For Each rCell In Intersect(Target, Range("A:A"))
If rCell.Column = 1 And rCell.Offset(0, 1) = "" Then
rCell.Offset(0, 1).NumberFormat = "yyyy-m-d h:mm:ss"
rCell.Offset(0, 1) = Now
End If
Next
End If
End With
End Sub
2.記錄A列單元格最后一次輸入的日期和時(shí)間:
Private Sub Worksheet_Change(ByVal Target As Range)
'在B列單元格中記錄A列同行單元格最后一次輸入的日期時(shí)間
Dim rCell As Range
With Target
If .Count = 1 Then
If .Column = 1 Then
.Offset(0, 1).NumberFormat = "yyyy-m-d h:mm:ss"
.Offset(0, 1) = Now
End If
Else
If Intersect(Target, Range("A:A")) Is Nothing Then End
For Each rCell In Intersect(Target, Range("A:A"))
rCell.Offset(0, 1).NumberFormat = "yyyy-m-d h:mm:ss"
rCell.Offset(0, 1) = Now
Next
End If
End With
End Sub
在開(kāi)始輸入前,先刪除B列內(nèi)容,然后在A列輸入即可在B列自動(dòng)記錄日期和時(shí)間。
“最多迭代次數(shù)”可保持默認(rèn)的“100”。
2.在B1單元格中輸入公式:=IF(A1="","",IF(B1="",TEXT(NOW(),"yyyy-m-d h:mm:ss"),B1))
然后拖動(dòng)填充柄向下填充公式到所需的位置。
這樣,當(dāng)在A列輸入數(shù)據(jù)時(shí),B列對(duì)應(yīng)的單元格會(huì)自動(dòng)記錄當(dāng)前的日期和時(shí)間。
說(shuō)明:1.上述公式雖然能記錄A列單元格中第一次輸入的日期和時(shí)間,但直接更改A列單元格內(nèi)容后,該公式并不能記錄最后一次輸入的日期和時(shí)間。要記錄A列單元格最后輸入的日期和時(shí)間,可先按Delete鍵刪除A列單元格內(nèi)容后再次輸入。
2.重新打開(kāi)Excel后,上述“迭代計(jì)算”選項(xiàng)會(huì)自動(dòng)取消。如果啟動(dòng)Excel后打開(kāi)了一個(gè)未設(shè)置該選項(xiàng)的工作簿,再次打開(kāi)已設(shè)置“迭代計(jì)算”選項(xiàng)的工作簿時(shí),Excel仍會(huì)給出循環(huán)引用的提示,此時(shí)重新設(shè)置“迭代計(jì)算”選項(xiàng)即可。
方法二:用VBA
下面的VBA代碼利用“Worksheet_Change”事件來(lái)實(shí)現(xiàn)自動(dòng)記錄日期時(shí)間的目的。在Excel中按Alt+F11,打開(kāi)VBA編輯器,在“工程”窗口中雙擊所需的工作表,在代碼窗口中根據(jù)需要分別粘貼下面的代碼。
1.記錄A列單元格第一次輸入的日期和時(shí)間:
Private Sub Worksheet_Change(ByVal Target As Range)
'在B列單元格中記錄A列同行單元格第一次輸入的日期和時(shí)間
Dim rCell As Range
With Target
If .Count = 1 Then
If .Column = 1 And .Offset(0, 1) = "" Then
.Offset(0, 1).NumberFormat = "yyyy-m-d h:mm:ss"
.Offset(0, 1) = Now
End If
Else
If Intersect(Target, Range("A:A")) Is Nothing Then End
For Each rCell In Intersect(Target, Range("A:A"))
If rCell.Column = 1 And rCell.Offset(0, 1) = "" Then
rCell.Offset(0, 1).NumberFormat = "yyyy-m-d h:mm:ss"
rCell.Offset(0, 1) = Now
End If
Next
End If
End With
End Sub
2.記錄A列單元格最后一次輸入的日期和時(shí)間:
Private Sub Worksheet_Change(ByVal Target As Range)
'在B列單元格中記錄A列同行單元格最后一次輸入的日期時(shí)間
Dim rCell As Range
With Target
If .Count = 1 Then
If .Column = 1 Then
.Offset(0, 1).NumberFormat = "yyyy-m-d h:mm:ss"
.Offset(0, 1) = Now
End If
Else
If Intersect(Target, Range("A:A")) Is Nothing Then End
For Each rCell In Intersect(Target, Range("A:A"))
rCell.Offset(0, 1).NumberFormat = "yyyy-m-d h:mm:ss"
rCell.Offset(0, 1) = Now
Next
End If
End With
End Sub
在開(kāi)始輸入前,先刪除B列內(nèi)容,然后在A列輸入即可在B列自動(dòng)記錄日期和時(shí)間。
我的個(gè)性簽名