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

如何在Excel中的單元格中記錄更改的值?

如何在Excel中記錄頻繁更改的單元格的每個更改值? 例如,單元格C2中的原始值為100,將數字100更改為200時,原始值100將自動顯示在單元格D2中進行記錄。 繼續將200更改為300,將200插入到單元格D3中,將300更改為400將顯示300到D4,依此類推。 本文中的方法可以幫助您實現它。

使用VBA代碼在單元格中記錄更改值


使用VBA代碼在單元格中記錄更改值

下面的VBA代碼可以幫助您在Excel的單元格中記錄每個更改的值。 請執行以下操作。

1.在工作表中包含要記錄更改值的單元格,右鍵單擊工作表選項卡,然後單擊 查看代碼 從上下文菜單中。 看截圖:

2.然後 Microsoft Visual Basic for Applications 窗口正在打開,請將下面的VBA代碼複製到“代碼”窗口中。

VBA代碼:在單元格中記錄更改的值

Dim xVal As String
'Update by Extendoffice 2018/8/22
Private Sub Worksheet_Change(ByVal Target As Range)
    Static xCount As Integer
    Application.EnableEvents = False
    If Target.Address = Range("C2").Address Then
        Range("D2").Offset(xCount, 0).Value = xVal
        xCount = xCount + 1
    Else
        If xVal <> Range("C2").Value Then
         Range("D2").Offset(xCount, 0).Value = xVal
        xCount = xCount + 1
        End If
    End If
    Application.EnableEvents = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    xVal = Range("C2").Value
End Sub

筆記:在代碼中,C2是要記錄其所有更改值的單元格。 D2是您將填充C2的第一個變化值的單元格。

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

從現在開始,每次更改單元格C2中的值時,以前的更改值將記錄在D2和D2以下的單元格中。


最佳辦公效率工具

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底部
按評論排序
留言 (50)
還沒有評分。 成為第一位評論!
網站主持人對此評論進行了最小化
Hi


如果每次都輸入 C2 中的值,這非常有效,但如果 C2 包含公式,則它不起作用。 有沒有辦法解決這個問題,但在 C2 中有一個公式?


感謝這個簡單的解決方案。
網站主持人對此評論進行了最小化
如果你知道如何使用它,如果 C2 包含一個公式,請告訴我你是如何做到的。 我似乎無法找到如何在互聯網上的任何地方。
網站主持人對此評論進行了最小化
美好的一天,
代碼已經優化。 請試一試,感謝您的評論。

將 xVal 調暗為字符串
Private Sub Worksheet_Change(ByVal Target As Range)
靜態 xCount 為整數
Application.EnableEvents = False
If Target.Address = Range("C2").Address Then
Range("D2").Offset(xCount, 0).Value = xVal
xCount = xCount + 1
其他
If xVal <> Range("C2").Value Then
Range("D2").Offset(xCount, 0).Value = xVal
xCount = xCount + 1
如果結束
如果結束
Application.EnableEvents = True
END SUB
私人子工作表_SelectionChange(ByVal Target As Range)
xVal = Range("C2").Value
END SUB
網站主持人對此評論進行了最小化
海,



以上 VBS 只有 C2 移動到 D2,



INEED C2 至 C55 移至 D2 至 D55



你能幫忙發給我嗎 alexmathew33@gmail.com
網站主持人對此評論進行了最小化
請在以下情況下幫助我:
從表 1:
A1=VALUE(由於 RTD 與公式的變化)
B2= VALUE1(由於 RTD 與公式的變化)

將所有先前的值單元格 A1、B1 複製到 M 列的 Sheet2、NOF 相同的 excel 或新工作簿的 Sheet1

請與我分享到 melukotahari@gmail.com

-Melukota
網站主持人對此評論進行了最小化
我們可以得到以上的 VBS
網站主持人對此評論進行了最小化
如果單元格 C2 是公式怎麼辦? 如果是公式,如何記錄 C2 的值?
網站主持人對此評論進行了最小化
美好的一天,
代碼已經優化。 請試一試,感謝您的評論。

將 xVal 調暗為字符串
Private Sub Worksheet_Change(ByVal Target As Range)
靜態 xCount 為整數
Application.EnableEvents = False
If Target.Address = Range("C2").Address Then
Range("D2").Offset(xCount, 0).Value = xVal
xCount = xCount + 1
其他
If xVal <> Range("C2").Value Then
Range("D2").Offset(xCount, 0).Value = xVal
xCount = xCount + 1
如果結束
如果結束
Application.EnableEvents = True
END SUB
私人子工作表_SelectionChange(ByVal Target As Range)
xVal = Range("C2").Value
END SUB
網站主持人對此評論進行了最小化
海,



以上 VBS 只有 C2 移動到 D2,



INEED C2 至 C55 移至 D2 至 D55



你能幫忙發給我嗎 alexmathew33@gmail.com
網站主持人對此評論進行了最小化
嗨——我真的很感激這個教程......我正在嘗試在不同的電子表格上記錄更改的值。 例如,我想在 sheet1 D2 上記錄 sheet2 C2 的值。 你能提供調整後的代碼嗎?
感謝您!
網站主持人對此評論進行了最小化
記錄可以是水平的而不是垂直的嗎?
網站主持人對此評論進行了最小化
您好,這個宏是否可以在兩個單獨的列中記錄兩個單獨的單元格? IE。 我可以在 B 列中記錄 A1 中的所有值,在 D 列中記錄 C1 中的所有值嗎?
網站主持人對此評論進行了最小化
嗨,
請嘗試本文中的方法:
如何在Excel中記住或保存已更改單元格的先前單元格值?
https://www.extendoffice.com/documents/excel/5056-excel-remember-save-previous-cell-value.html
網站主持人對此評論進行了最小化
謝謝你,但不是永遠繼續下去,我怎麼能在 X 次後重新啟動第一個單元格?
網站主持人對此評論進行了最小化
嗨,
你的意思是在記錄X次後,你想重新開始回到第一個記錄值?
抱歉,我不確定我是否收到您的問題。 如果您能提供您正在嘗試做的事情的屏幕截圖,那就太好了。
網站主持人對此評論進行了最小化
謝謝

但是如果我需要對許多單元格重複它,我該怎麼辦
網站主持人對此評論進行了最小化
謝謝

但是如果我需要重複一次原始文件,我該怎麼辦
網站主持人對此評論進行了最小化
Peki bu kaydı yatay olarak nasıl kaydedeceğiz。 Satırlara değil Sütunlara kaydetmesini istiyorum。 特謝庫勒
網站主持人對此評論進行了最小化
如何在生成號碼後而不是在生成新號碼後立即保存號碼? 我遇到的問題是沒有立即記錄該號碼,而是在創建第二個號碼之後; 這意味著我正在記錄的單元格或作為目標的單元格都沒有數字......一旦生成數字,我該如何記錄? 謝謝你的幫助!
網站主持人對此評論進行了最小化
你好,約翰,
抱歉不能幫你。 歡迎在我們的論壇發表任何問題: https://www.extendoffice.com/forum.html. 感謝您的評論。
網站主持人對此評論進行了最小化
您好,可以將其應用於多個單元格嗎?
網站主持人對此評論進行了最小化
你好! 感謝您的代碼,但我有一個問題

有沒有辦法修改代碼,以便它每天或在某些日子記錄單元格的值,我在單獨的列中指定?


謝謝!
網站主持人對此評論進行了最小化
嘗試這個

將 xVal 調暗為字符串
Dim iVal 作為整數
Private Sub Worksheet_Change(ByVal Target As Range)
靜態 xCount 為整數
iVal = Application.WorksheetFunction.Count(Range("F:F"), 1)
xCount = iVal
Application.EnableEvents = False
If Target.Address = Range("C2").Address Then
Range("E3").Offset(xCount, 0).Value = Range("C2").Value
Range("F3").Offset(xCount, 0).Value = Now
xCount = xCount + 1
其他
If xVal <> Range("C2").Value Then
Range("E3").Offset(xCount, 0).Value = Range("C2").Value
Range("F3").Offset(xCount, 0).Value = Now
xCount = xCount + 1
如果結束
如果結束
Application.EnableEvents = True
END SUB
私人子工作表_SelectionChange(ByVal Target As Range)
xVal = Range("C2").Value
END SUB
網站主持人對此評論進行了最小化
我為包含 DDE 值的 C2 單元嘗試了這段代碼,該值逐秒變化。 我使用以下代碼但不工作。

將 xVal 調暗為字符串
Private Sub Worksheet_Change(ByVal Target As Range)
靜態 xCount 為整數
Application.EnableEvents = False
If Target.Address = Range("C2").Address Then
Range("D2").Offset(xCount, 0).Value = xVal
xCount = xCount + 1
其他
If xVal <> Range("C2").Value Then
Range("D2").Offset(xCount, 0).Value = xVal
xCount = xCount + 1
如果結束
如果結束
Application.EnableEvents = True
END SUB
私人子工作表_SelectionChange(ByVal Target As Range)
xVal = Range("C2").Value
END SUB
網站主持人對此評論進行了最小化
美好的一天,
您使用哪個 Excel 版本?
網站主持人對此評論進行了最小化
當我輸入數據時它起作用,當我將實時數據直接流式傳輸到該單元格時它不起作用(= RTD(.....))。 我怎樣才能使它與 RTD 一起工作?
網站主持人對此評論進行了最小化
非常感謝這些教程,我想知道是否有辦法讓一個單元格像普通計算器一樣工作。
即這個單元格應該能夠對出現在另一個單元格中的數字求和,同時保持最後一個累積數字可見。
這個其他單元格將是鍵入單元格或活動單元格。
示例:
單元格 1:=2*5,答案出現在單元格 2 中,
單元格 1:=3*6.8,答案被添加到由 (2*5) 產生的前一個值,並且仍然出現在單元格 2 中。
網站主持人對此評論進行了最小化
上面的公式不適用於公式,僅適用於手動輸入。 有什麼方法可以更改編碼以使其適用於包含公式的單元格?



將 xVal 調暗為字符串
'更新 Extendoffice 2018/8/22
Private Sub Worksheet_Change(ByVal Target As Range)
靜態 xCount 為整數
Application.EnableEvents = False
If Target.Address = Range("C2").Address Then
Range("D2").Offset(xCount, 0).Value = xVal
xCount = xCount + 1
其他
If xVal <> Range("C2").Value Then
Range("D2").Offset(xCount, 0).Value = xVal
xCount = xCount + 1
如果結束
如果結束
Application.EnableEvents = True
END SUB
私人子工作表_SelectionChange(ByVal Target As Range)
xVal = Range("C2").Value
END SUB
網站主持人對此評論進行了最小化
美好的一天,
請嘗試以下 VBA。



將 xVal 調暗為字符串

Private Sub Worksheet_Change(ByVal Target As Range)

靜態 xCount 為整數

Application.EnableEvents = False

If Target.Address = Range("C2").Address Then

Range("D2").Offset(xCount, 0).Value = xVal

xCount = xCount + 1

其他

If xVal <> Range("C2").Value Then

Range("D2").Offset(xCount, 0).Value = xVal

xCount = xCount + 1

如果結束

如果結束

Application.EnableEvents = True

END SUB

私人子工作表_SelectionChange(ByVal Target As Range)

xVal = Range("C2").Value

END SUB
網站主持人對此評論進行了最小化
不適用於公式
網站主持人對此評論進行了最小化
這個世界很好,但是,我需要將此代碼應用於 2 個不同的單元格,將每個單元格的更改值保存在單獨的對應列中。 如何修改代碼? 謝謝。
網站主持人對此評論進行了最小化
嗨,

請嘗試本文中的方法:

如何在Excel中記住或保存已更改單元格的先前單元格值?

https://www.extendoffice.com/documents/excel/5056-excel-remember-save-previous-cell-value.html
網站主持人對此評論進行了最小化
是否可以對此進行調整併與 DDE/RTD 一起使用? 手動更改單元格時工作正常,但不適用於 DDE/RTD。
網站主持人對此評論進行了最小化
可以將其更改為適用於一個工作表中的多個單元格嗎?
網站主持人對此評論進行了最小化
嗨,

請嘗試本文中的方法:

如何在Excel中記住或保存已更改單元格的先前單元格值?

https://www.extendoffice.com/documents/excel/5056-excel-remember-save-previous-cell-value.html
網站主持人對此評論進行了最小化
你好! 我嘗試使用此代碼記錄特定單元格值的每次更改。 但是,我想知道是否有人可以通過修改它來幫助我,以便將值的變化收集在不同的選項卡中,並且每次關閉工作簿時都會保存它。 因為每次打開工作簿時它都會重新設置自己而不保存以前的值。 代碼:將 xVal 調暗為字符串
'更新 Extendoffice 2018/8/22
Private Sub Worksheet_Change(ByVal Target As Range)
靜態 xCount 為整數
Application.EnableEvents = False
If Target.Address = Range("J7").Address Then
Range("AB2").Offset(xCount, 0).Value = xVal
xCount = xCount + 1
其他
If xVal <> Range("J7").Value Then
Range("AB2").Offset(xCount, 0).Value = xVal
xCount = xCount + 1
如果結束
如果結束
Application.EnableEvents = True
END SUB
私人子工作表_SelectionChange(ByVal Target As Range)
xVal = Range("J7").Value
END SUB
網站主持人對此評論進行了最小化
你好,感謝以下。 快速問題....您是否可以有時重置此設置,以便根據您的要求,您可以讓宏刪除所有以前的數字並再次從單元格 D2 開始記錄數字? 目前,數字記錄在 D2、D3、D4、D5、D6 等
這裡還沒有評論
載入更多
留下你的意見
以訪客身份發帖
×
評價此帖子:
0   字符
推薦地點

關注我們

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