Note: The other languages of the website are Google-translated. Back to English

當另一個單元格中的數據在Excel中更改時,如何插入當前時間戳記?

假設您收到一個工作表,該工作表需要您修改特定列中的數據。 修改工作表後,您需要插入修改後的時間戳,以讓其他人知道已更改了哪些單元格。 怎麼處理呢? 本文將向您展示當Excel中另一個單元格中的數據發生更改時插入當前時間戳記的方法,如下圖所示。

當另一個單元格中的數據隨VBA代碼變化時插入當前時間戳記


當另一個單元格中的數據隨VBA代碼變化時插入當前時間戳記

如下面的屏幕截圖所示,如果更改了C列中的相應單元格,則需要在E列中填充時間戳。 請執行以下操作。

1.在工作表中,您需要修改並標記時間戳,右鍵單擊工作表選項卡,然後單擊 查看代碼 從右鍵單擊菜單中。

2.然後將以下VBA代碼複製並粘貼到 推薦碼 的窗口 Microsoft Visual Basic for Applications 窗口。 看截圖:

VBA代碼:當另一個單元格中的數據更改時,插入當前時間戳記

Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20180830
Dim xCellColumn As Integer
Dim xTimeColumn As Integer
Dim xRow, xCol As Integer
Dim xDPRg, xRg As Range
xCellColumn = 3
xTimeColumn = 5
xRow = Target.Row
xCol = Target.Column
If Target.Text <> "" Then
    If xCol = xCellColumn Then
       Cells(xRow, xTimeColumn) = Now()
    Else
        On Error Resume Next
        Set xDPRg = Target.Dependents
        For Each xRg In xDPRg
            If xRg.Column = xCellColumn Then
                Cells(xRg.Row, xTimeColumn) = Now()
            End If
        Next
    End If
End If
End Sub

備註:在代碼中,數字3表示您將修改C列中的數據,數字5表示時間戳將填充到E列中。請根據需要進行更改。

3。 按 其他 + Q 關閉鍵 Microsoft Visual Basic for Applications 窗口。

從現在開始,當更改C列中的數據時,時間戳將填充到E列中的相應單元格中,如下圖所示。

小費。 日期選擇器。 “ 插入日期 的效用 Excel的Kutools 幫助您快速將具有指定日期格式的日期插入到選定的單元格中。
立即下載並試用! (30-天免費試用)


相關文章:


最佳辦公效率工具

Kutools for Excel 解決了你的大部分問題,並將你的生產力提高了 80%

  • 重用: 快速插入 複雜的公式,圖表 以及您以前使用過的任何東西; 加密單元 帶密碼 創建郵件列表 並發送電子郵件...
  • 超級公式欄 (輕鬆編輯多行文本和公式); 閱讀版式 (輕鬆讀取和編輯大量單元格); 粘貼到過濾範圍...
  • 合併單元格/行/列 不會丟失數據; 拆分單元格內容; 合併重複的行/列...防止細胞重複; 比較範圍...
  • 選擇重複或唯一 行; 選擇空白行 (所有單元格都是空的); 超級查找和模糊查找 在許多工作簿中; 隨機選擇...
  • 確切的副本 多個單元格,無需更改公式參考; 自動創建參考 到多張紙; 插入項目符號,複選框等...
  • 提取文字,添加文本,按位置刪除, 刪除空間; 創建和打印分頁小計; 在單元格內容和註釋之間轉換...
  • 超級濾鏡 (將過濾方案保存並應用於其他工作表); 高級排序 按月/週/日,頻率及更多; 特殊過濾器 用粗體,斜體...
  • 結合工作簿和工作表; 根據關鍵列合併表; 將數據分割成多個工作表; 批量轉換xls,xlsx和PDF...
  • 超過 300 項強大的功能. 支持 Office / Excel 2007-2021 和 365。支持所有語言。 在您的企業或組織中輕鬆部署。 完整功能 30 天免費試用。 60 天退款保證。
kte選項卡201905

Office選項卡為Office帶來了選項卡式界面,使您的工作更加輕鬆

  • 在Word,Excel,PowerPoint中啟用選項卡式編輯和閱讀,發布者,Access,Visio和Project。
  • 在同一窗口的新選項卡中而不是在新窗口中打開並創建多個文檔。
  • 將您的工作效率提高 50%,每天為您減少數百次鼠標點擊!
officetab底部
按評論排序
留言 (57)
還沒有評分。 成為第一位評論!
網站主持人對此評論進行了最小化
嗨,上面的公式對單個單元格時間戳更新很有用例如:如果我們在第 3 個單元格中輸入任何數據,時間戳會在第 5 個單元格中自動更新。 請諮詢多個單元格更新。 例如:如果我們在第 3 個單元格輸入任何數據,時間戳會在第 5 個單元格自動更新,如果我們在第 4 個單元格輸入,它將在第 6 個單元格更新。
網站主持人對此評論進行了最小化
我也對這個確切的問題感興趣。 你找到答案了嗎? 我對此的評論會引起其他人對這個問題的關注嗎?!
網站主持人對此評論進行了最小化
我正在粘貼多行和多列的數據(一次,並且總是同時)。 我只希望時間戳顯示在一個單元格中。 換句話說,只要單元格 C9 發生變化(我的數據的左上角),就會在單元格 A1 中顯示時間。 任何幫助將非常感激!
網站主持人對此評論進行了最小化
我們如何鎖定時間格式.. 因為它每次都會更新並插入日期和時間。
網站主持人對此評論進行了最小化
我正在 Excel 中創建一個工作表,我想在其中使用時間戳跟踪特定事務的開始和結束時間。 一列還將顯示持續時間。 請看下圖。 有人能幫我嗎? 下圖。

我找到了 2 個記錄時間戳的 VBA 代碼。 但是,我不知道如何合併它們,所以它們將在這張表中工作:


代碼 1 。 當您在“案例 ID”欄 (A4) 中輸入交易編號時,它會在“開始時間”欄 (B4) 中顯示時間戳。


Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo 處理程序
如果 Target.Column = 1 並且 Target.Value <> "" 那麼
Application.EnableEvents = False
Target.Offset(0, 1) = Format(Now(), "mm/dd/yyyy HH:mm:ss")
Application.EnableEvents = True
如果結束
處理程序:
END SUB


代碼 2。如果選擇了“狀態”列 (C4) 中的下拉列表中的選項,則會在“結束時間”列 (D4) 中顯示時間戳。


Private Sub Worksheet_Change(ByVal Target As Range)
將 xCellColumn 調暗為整數
將 xTimeColumn 調暗為整數
將 xRow、xCol 調暗為整數
xCellColumn = 3
xTimeColumn = 4
xRow = 目標.Row
xCol = Target.Column
如果 Target.Text <> "" 那麼
如果 xCol = xCellColumn 那麼
單元格(xRow,xTimeColumn)= 現在()
如果結束
如果結束
END SUB
網站主持人對此評論進行了最小化
親愛的嘉,
沒看到你的圖。 請點擊下面的上傳文件按鈕上傳您的圖片。
查看附件 (1 / 5)
網站主持人對此評論進行了最小化
如果我想在同一個工作表中單獨為多個單元格添加時間戳,代碼是什麼?
示例:第 3 列中的更改,第 5 列中的時間戳。第 10 列中的更改,第 11 列中的時間戳。第 13 列中的更改,第 14 列中的時間戳。
xCellColumn = 3
xTimeColumn = 5
網站主持人對此評論進行了最小化
親愛的瑪麗,
以下 VBA 代碼可以幫助您。 感謝您的評論。

Private Sub Worksheet_Change(ByVal Target As Range)
暗淡我只要
昏暗J只要
將 xCols 調暗
將 xSRg 調暗為範圍
將 xRgEx 調暗為範圍
將 xSRgArea 調暗為範圍
將 xNextArea 調暗為範圍
在錯誤恢復下一頁
Application.EnableEvents = False
設置 xSRg = Union(Range("C:C"), Range("E:E"), Range("J:K"), Range("M:N"))
設置 xRgEx = 相交(xSRg,目標)
如果 xRgEx 什麼都不是,則轉到 ExitSub
對於 I = 1 到 xSRg.Areas.Count
J = 我
設置 xSRgArea = xSRg.Areas.Item(I)
如果 xRgEx.Column = xSRgArea(1).Column 那麼
xCols = xSRgArea.Columns.Count
如果 xCols = 1 那麼
設置 xNextArea = xSRg.Areas.Item(J + 1)
如果 xNextArea 什麼都沒有,那麼
轉到退出子
ElseIf xNextArea.Columns.Count = 1 那麼
xNextArea(xRgEx.Row).Value = 現在()
退出
如果結束
ElseIf xCols = 2 則
xSRgArea.Columns(2).Rows(xRgEx.Row).Value = 現在()
退出
如果結束
如果結束
下一頁
退出子:
Application.EnableEvents = True
END SUB
網站主持人對此評論進行了最小化
您能否分享需要更新以使其特定於另一個電子表格的內容? 例如,E 中 C 時間戳的變化,I 中 G 時間戳的變化,Q 中 O 時間戳的變化。
網站主持人對此評論進行了最小化
我只是將上面提到的第一個代碼串在一起,將所有變量從 VAR 更改為 VAR1/VAR2/VAR3 等
網站主持人對此評論進行了最小化
嗨,如果任何值發生更改並且時間戳僅在特定單元格(如 A1)中更新,則可以完成
網站主持人對此評論進行了最小化
美好的一天,
如果您希望在某個範圍內更改任何值時始終在單元格 A1 中顯示時間戳。 以下 VBA 代碼可以提供幫助。

Private Sub Worksheet_Change(ByVal Target As Range)
將 xRg 調暗為範圍
在錯誤恢復下一頁
設置 xRg = Intersect(Target, Range("B1:D4"))
如果 xRg 什麼都不是,則退出 Sub
範圍(“A1”)。值 = 現在()
END SUB
網站主持人對此評論進行了最小化
嗨,水晶,這真的很好,當相應行中單元格範圍內的任何單元格發生變化時,我如何才能獲得每個相應行中的時間戳變化。 當 B2 到 H2 之間進行任何更改時,A2 應該使用時間戳進行更新,等等 A3、A4 等。
網站主持人對此評論進行了最小化
我在 excel 中有一個數據庫,我需要跟踪已更改的內容。
是否可以修改代碼,以便如果在工作表 1 中進行更改,它將復制工作表 2 中更改的單元格並在其旁邊提供時間戳?
網站主持人對此評論進行了最小化
美好的一天,
抱歉幫不上忙。 感謝您的評論。
網站主持人對此評論進行了最小化
非常感謝你做的這些! 每次完成一項任務時,我都會使用滾動按鈕將總數加 1,但宏不會記錄對按鈕的更改。 在做了更多研究之後,我想出瞭如何為我的控制按鈕分配一個宏,現在我可以跟踪我的更改了!!!!!! 我讓它變得比它需要的更複雜,這就是我最終得到的:


子時間戳()
'
' 時間戳宏
' 滾動按鈕上的時間戳
'
'
範圍(“j2”)。值 = 現在()

END SUB
網站主持人對此評論進行了最小化
嗨,如果我手動更改單元格,當我複制和粘貼信息不起作用時,這非常有效。 每次有人粘貼新信息時,我都會嘗試使用此時間戳。 我想要捕獲的行為不是一一更改單元格信息,而是將數據批量粘貼到多個單元格時。 有人知道我應該怎麼做嗎?


謝謝,
網站主持人對此評論進行了最小化
非常感謝,但是只有“手動”更改單元格中的值時,時間戳才會更改。 如果由於另一個單元格中的更改而更改並且值作為公式的一部分更改,則沒有時間戳。 您對此有解決方案嗎? 謝謝! 丹尼斯
網站主持人對此評論進行了最小化
親愛的丹尼斯,
代碼已更新,問題已解決。 謝謝你的評論。
網站主持人對此評論進行了最小化
嗨,

這正是我想要的! 但是我想知道您是否可以幫助我使用受保護的工作表。 它似乎只適用於未受保護的情況(當時間戳因公式中的值變化而更新時,類似於丹尼斯的請求)。

非常感謝! 巴塞爾
網站主持人對此評論進行了最小化
嗨,
這也適用於受保護的工作表。 在保護工作表之前,您需要提前將更改的單元格和時間戳單元格格式化為解鎖狀態。 請再試一次。 謝謝你的評論。
網站主持人對此評論進行了最小化
嗨,


是否可以更改代碼,以便多列中的任何更改都會在同一單元格中生成新的時間戳? 即我在任何一個單元格 A3、B3 或 C3 中進行編輯,而時間戳僅在 C4 中更新?


此外,是否可以使代碼僅適用於工作表中的特定範圍?


謝謝
網站主持人對此評論進行了最小化
嗨亞歷克
請嘗試以下 VBA 代碼。 感謝您的評論。

Private Sub Worksheet_Change(ByVal Target As Range)
將 xRRg、xRg 調暗為範圍
將 xRgArray 調暗為變體
將 xStrCell 調暗為字符串
將 xSCRg 調暗為範圍
將 xStrResult 調暗為字符串
xRgArray = Array("A1:C10")
xStrCell = "A3, B3, C3"
xStrResult = "C4"
在錯誤恢復下一頁

如果 Target.Cells.count > 1 然後退出 Sub
對於 xFNum = LBound(xRgArray) 到 UBound(xRgArray)
如果 xRgArray(xFNum) <> "" 那麼
設置 xRg = Range(xRgArray(xFNum))
如果不是 xRg 什麼都不是,那麼
設置 xSCRg = Null
設置 xSCRg = xRg.Range(xStrCell)
xSCRg.選擇
如果不是 xSCRg 什麼都不是,那麼
If Not Intersect(xSCRg, Target) 什麼都不是
設置 xRRg = xRg.Range(xStrResult)
如果 xRRg 沒有,則退出 Sub
xRRg.Value = 現在()
退出
如果結束
如果結束
如果結束
如果結束
下一個 xFNum
END SUB
網站主持人對此評論進行了最小化
嘿,希望你還能看到這個!!! 每當更新 C6 時,我都會使用下面的代碼在 C5 中更新時間戳。 問題是當我在工作表的其餘部分時,只要我按 Enter 或 Tab,它就會讓我跳回 C5。 有什麼想法嗎?

將 xRRg、xRg 調暗為範圍
將 xRgArray 調暗為變體
將 xStrCell 調暗為字符串
將 xSCRg 調暗為範圍
將 xStrResult 調暗為字符串
xRgArray = Array("C5:C6")
xStrCell = "C5"
xStrResult = "C6"
在錯誤恢復下一頁

如果 Target.Cells.Count > 1 然後退出 Sub
對於 xFNum = LBound(xRgArray) 到 UBound(xRgArray)
如果 xRgArray(xFNum) <> "" 那麼
設置 xRg = Range(xRgArray(xFNum))
如果不是 xRg 什麼都不是,那麼
設置 xSCRg = Null
設置 xSCRg = xRg.Range(xStrCell)
xSCRg.選擇
如果不是 xSCRg 什麼都不是,那麼
If Not Intersect(xSCRg, Target) 什麼都不是
設置 xRRg = xRg.Range(xStrResult)
如果 xRRg 沒有,則退出 Sub
xRRg.Value = 現在()
退出
如果結束
如果結束
如果結束
如果結束
下一個 xFNum
END SUB
網站主持人對此評論進行了最小化
嘿,這有點類似於我的要求,我希望在更新 A 和 AH 之間的單元格時更新列 AG 中的時間戳。
我已經嘗試了上面的代碼,但沒有運氣。
網站主持人對此評論進行了最小化
我有一個我正在做的項目,我會定期更新。 它主要是為了跟踪我的員工的信息,如電話號碼、駕駛執照到期等。由於我經常更新它,我想要一個自動時間戳,它位於我的工作表的頂部或底部,每次我都會更新今天的日期在電子表格的任何地方更新信息。 我目前使用的是 AN 和 1-42,所以我需要 M40 左右的印章。 該代碼看起來如何?
網站主持人對此評論進行了最小化
打開 Developer 並在您的工作簿上選擇 Workbook 和 BeforeSave 事件。


在 sub 中輸入代碼: Range("M40").value = Now
網站主持人對此評論進行了最小化
添加時間戳效果非常好,非常有用。 但是,當我刪除一行時收到錯誤消息,因為腳本無法在不再存在的行中插入時間戳。


如果有人可以建議如何解決這個問題,那就太好了。
網站主持人對此評論進行了最小化
嗨,桑德,
在我的情況下沒有發生錯誤。 你能告訴我你的Excel版本嗎? 感謝您的評論。
網站主持人對此評論進行了最小化
嗨,水晶,這真的很好,當相應行中單元格範圍中的任何單元格發生變化時,我如何才能獲得每個相應行中的時間戳變化。 例如,當 B2 到 H2 之間的第二行發生任何更改時,A2 應該使用時間戳進行更新,同樣,當 B3 到 H3 發生更改時,A3 會獲取時間戳,依此類推,直到最後一行。
網站主持人對此評論進行了最小化
大家好

提前感謝您的幫助。

如果該行的任何單元格發生變化,應該使用什麼代碼更新 X 列中單元格的當前時間? 例如,單元格 a2 到 w2 的值發生任何變化,則時間應該在 x2 中更新。


再次感謝。
網站主持人對此評論進行了最小化
如果您使用的 excel 文件是可刷新的,是否會繞過時間戳功能?
網站主持人對此評論進行了最小化
美好的一天,
該代碼不支持連接數據。 帶來不便敬請諒解。
網站主持人對此評論進行了最小化
男裝,

已經一個月了,我正在尋找類似的解決方案。 雖然上述解決方案似乎是 OTM,但我將其用於股票市場。
因此,我在 F 列中實施了買入/賣出策略,並且表格每 1 分鍾繼續刷新一次。 我有 T 列,我想要基於以下條件的時間戳:

(1) F 欄 - 發出買入或賣出信號
(2) F 欄 - 從買入到賣出或從賣出到買入的變化
(3) F 列 - 從買入/賣出變為空

雖然網上可用的通用解決方案似乎正在工作(excel公式),但是當數據刷新時,它會打出當前時間而不是信號時間。 例如,如果我在 9:15 小時獲得買入,如果當前時間是 10:30,我會在 T 列(信號時間)中看到 10:30 小時,而不是 9:15 小時。

任何援助將不勝感激。

溫暖的問候
JT
網站主持人對此評論進行了最小化
5/15/19|1:41 PM|John Smith|125B-1|10000000|Equipment|Staff|5/15/19|2:43 PM|Staff

上面的帖子顯示了輸入一行的數據。 每當填充 ID (2) 列時,我都在尋求幫助更新包含時間戳的前 10000000 列。 如果可能,如果 ID 也被刪除,時間戳是否也被刪除? 關於最後 3 列 (date|time|staff),只要最後一列填充了員工姓名,這些時間戳就會更新。 我試著玩弄代碼,但我對 VBA 的了解不足,只能讓我做這麼多。
網站主持人對此評論進行了最小化
嗨水晶,
我正在嘗試創建一個函數,如果我更新表 9 中 H9:L1 中的任何單元格,則表 2 中單元格 C2 中的時間戳應該得到更新。
現在我需要在工作表 100(H1:L10, H10:L11) 中的大約 11 行上執行此操作,並在工作表 3 中更新相應的 C4、C2....

任何幫助是極大的讚賞。 乾杯。!
這裡還沒有評論
載入更多

關注我們

版權所有©2009 - 萬維網。extendoffice.com。 | 版權所有。 供電 ExtendOffice。 |
Microsoft和Office徽標是Microsoft Corporation在美國和/或其他國家的商標或註冊商標。
受Sectigo SSL保護