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

如何在Excel中更新相鄰單元格時自動填充單元格中的日期?

有時,當更新某個列中的單元格時,您可能需要標記有關更新的最新日期。 本文將推荐一種VBA方法來解決此問題。 更新單元格後,相鄰單元格將立即自動使用當前日期進行填充。

使用VBA代碼更新相鄰單元格時,自動在單元格中填充當前日期


使用VBA代碼更新相鄰單元格時,自動在單元格中填充當前日期

假設您需要更新的數據位於B列中,並且在更新B列中的單元格時,當前日期將填充在A列的相鄰單元格中。請參見屏幕截圖:

您可以運行以下VBA代碼來解決此問題。

1.右鍵單擊您需要基於相鄰更新的單元格自動填充日期的工作表選項卡,然後單擊 查看代碼 從右鍵單擊菜單中。

2.在“ Microsoft Visual Basic應用程序”窗口中,請將以下VBA代碼複製並粘貼到“代碼”窗口中。

VBA代碼:相鄰單元格更新時,自動在單元格中填充當前日期

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'Updated by Extendoffice 2017/10/12
    Dim xRg As Range, xCell As Range
    On Error Resume Next
    If (Target.Count = 1) Then
        If (Not Application.Intersect(Target, Me.Range("B:B")) Is Nothing) Then _
            Target.Offset(0, -1) = Date
        Application.EnableEvents = False
        Set xRg = Application.Intersect(Target.Dependents, Me.Range("B:B"))
        If (Not xRg Is Nothing) Then
            For Each xCell In xRg
                xCell.Offset(0, -1) = Date
            Next
        End If
        Application.EnableEvents = True
    End If
End Sub

筆記:

1)。 在代碼中,B:B表示更新的數據位於B列中。
2)。 -1表示當前日期將填充在B列的左一欄中。如果要在C列填充當前日期,請將-1更改為1。

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

從現在開始,當更新B列中的單元格時,A列中的相鄰單元格將立即填充當前日期。 看截圖:


相關文章:


最佳辦公效率工具

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底部
按評論排序
留言 (46)
還沒有評分。 成為第一位評論!
網站主持人對此評論進行了最小化
謝謝你。 這有很大幫助。 但是當我刪除一行或添加一行時,會出現運行時錯誤 13 類型不匹配。 如何解決這個問題。 期待盡快恢復。
網站主持人對此評論進行了最小化
親愛的吉什努,
你提到的問題在我的案例中沒有出現。 請提供您的 Office 版本好嗎?
網站主持人對此評論進行了最小化
我有一組名為星期一、星期二、星期三等的 Excel 工作表。我需要將星期一的開始日期放在單元格 a1 中,並讓它在每張表格的單元格 a1 中填寫星期二到星期五的後續日期。 我根本不懂代碼,所以我只需要知道我可以輸入的簡單公式是什麼。 :) 謝謝你!
網站主持人對此評論進行了最小化
親愛的莉亞,
你只需要使用公式 =monday!A1+1 在工作表週二,=tuesday!A1+1 在工作表週三等等......
網站主持人對此評論進行了最小化
這可以在包含公式的單元格上完成嗎?
網站主持人對此評論進行了最小化
親愛的塔米,
代碼已更新。 現在可以在包含公式的單元格上完成。 感謝您的評論。
網站主持人對此評論進行了最小化
謝謝它工作正常,但是在關閉和保存時,我收到一個錯誤,即“VB 項目”功能無法保存在無宏工作簿中。 請指教
網站主持人對此評論進行了最小化
謝謝它工作正常,但是在關閉和保存時,我收到一個錯誤,即“VB 項目”功能無法保存在無宏工作簿中。 請指教
網站主持人對此評論進行了最小化
您只需要“另存為”啟用 Excel 宏的工作簿......
網站主持人對此評論進行了最小化
您可以在同一張紙上使用此功能兩次嗎? 即,如果我想將 B 列中的條目添加到時間戳列 A,並將 D 列中的條目添加到時間戳列 C。謝謝!
網站主持人對此評論進行了最小化
我通過執行以下操作使其工作:


Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'更新者 Extendoffice 2017/10/12
將 xRg 作為範圍調暗,將 xCell 作為範圍調暗
在錯誤恢復下一頁
如果 (Target.Count = 1) 那麼
If (Not Application.Intersect(Target, Me.Range("B:B")) 什麼都沒有) 那麼 _
Target.Offset(0, -1) = 日期
Application.EnableEvents = False
設置 xRg = Application.Intersect(Target.Dependents, Me.Range("B:B"))
如果(不是XRG什麼都不是)
對於 xRg 中的每個 xCell
xCell.Offset(0, -1) = 日期
下一頁
如果結束
Application.EnableEvents = True
如果結束


在錯誤恢復下一頁
如果 (Target.Count = 1) 那麼
If (Not Application.Intersect(Target, Me.Range("D:D")) 什麼都沒有) 那麼 _
Target.Offset(0, -1) = 日期
Application.EnableEvents = False
設置 xRg = Application.Intersect(Target.Dependents, Me.Range("D:D"))
如果(不是XRG什麼都不是)
對於 xRg 中的每個 xCell
xCell.Offset(0, -1) = 日期
下一頁
如果結束
Application.EnableEvents = True
如果結束
END SUB
網站主持人對此評論進行了最小化
嗨,

當我在 A 列和 B 列中輸入數字時,任何人都可以建議一個代碼,並且在 CI 列中保留一個像 A 列 + B 列這樣的公式。現在我需要一個 vba 代碼,它可以在 C 列更改時在 D 列中給出時間和日期在 A 列和 B 列中插入數字時不會。
網站主持人對此評論進行了最小化
美好的一天,
有關 Excel 的任何問題,請隨時在我們的論壇中發帖: https://www.extendoffice.com/forum.html.
您將從我們的 Excel 專業人員那裡獲得更多有關 Excel 的支持。
網站主持人對此評論進行了最小化
嗨 - VBA 新手 - 我想循環代碼 - VBA 代碼:當相鄰單元格更新時自動填充單元格中的當前日期,以便在單元格更新日期後,然後繼續說“J:J”並用日期更新 K,然後再做 2 次。 不知道是循環還是for? 謝謝
網站主持人對此評論進行了最小化
沒關係...我在下面嘗試了約翰的回應,它有效 - 謝謝!
網站主持人對此評論進行了最小化
我使用此代碼自動填充列,現在希望根據輸入到列 H 中的日期自動填充更多列。換句話說,一旦輸入日期,我可以自動填充列以添加日期 90、60 和 30 天?
網站主持人對此評論進行了最小化
嗨特蕾西,
以下 VBA 代碼可以幫助您解決問題。 請試一試。

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
將 xRg 作為範圍調暗,將 xCell 作為範圍調暗
將 xRgAddress 調暗為字符串
xRgAddress = "H:H"
在錯誤恢復下一頁
如果 (Target.count = 1) 那麼
如果 (Not Application.Intersect(Target, Me.Range(xRgAddress)) 什麼都沒有) 那麼
Target.Offset(0, 1) = 日期 + 90
Target.Offset(0, 2) = 日期 + 60
Target.Offset(0, 3) = 日期 + 30
如果結束
Application.EnableEvents = False
設置 xRg = Application.Intersect(Target.Dependents, Me.Range(xRgAddress))
如果(不是XRG什麼都不是)
對於 xRg 中的每個 xCell
xCell.Offset(0, 1) = 日期 + 90
xCell.Offset(0, 2) = 日期 + 60
xCell.Offset(0, 3) = 日期 + 30
下一頁
如果結束
Application.EnableEvents = True
如果結束
END SUB
網站主持人對此評論進行了最小化
你好。 我正在嘗試使用“使用 VBA 代碼更新相鄰單元格時自動填充單元格中的當前日期”。 這適用於工作表 1,但我還有 11 個其他工作表需要代碼才能處理。 請指教。 我根本不是 VBA 精通,所以我很感激我能得到的任何幫助!

謝謝。
網站主持人對此評論進行了最小化
嗨,格溫,
請重複上述步驟,將代碼複製到其他工作表。 這可能很乏味,但它確實有效。
網站主持人對此評論進行了最小化
你好,我需要一些幫助。 如果修改了任何單元格 B 到 N,我正在嘗試將當前日期填充到 A 列中。 偏移量讓我失望。 可以編寫此代碼來專門自動填充 A 列中的日期嗎?
網站主持人對此評論進行了最小化
你好,Joe,
下面的 VBA 代碼可以幫助您解決問題。 請試一試,感謝您的評論。

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'更新者 Extendoffice 20190924
將 xRg 作為範圍調暗,將 xCell 作為範圍調暗
將 xInt 調暗為整數
在錯誤恢復下一頁
如果 (Target.Count = 1) 那麼
If (Not Application.Intersect(Target, Me.Range("B:N")) 什麼都沒有) 那麼
Application.EnableEvents = False
xInt = 目標行
Me.Range("A" & xInt).Value = 日期
Application.EnableEvents = True
如果結束
如果結束
END SUB
網站主持人對此評論進行了最小化
你好,我可以設置日期和時間來填充嗎?
網站主持人對此評論進行了最小化
嗨,修道院,
在上面的代碼中,請替換這一行
“xCell.Offset(0, -1) = 日期”

“xCell.Offset(0, -1) = Format(Now(), “yyyy-MM-dd hh:mm:ss”)”。
希望我能幫上忙。 感謝您的評論。
網站主持人對此評論進行了最小化
這沒有添加時間......還有其他方法嗎?
網站主持人對此評論進行了最小化
你必須在 2 個地方改變它,如果你看到原始代碼,日期在 2 個地方,用 Format(Now(), "yyyy-MM-dd hh:mm:ss")
網站主持人對此評論進行了最小化
您好,當在同一行的任何單元格中輸入值時,有沒有辦法讓 (A) 列自動填充日期?
網站主持人對此評論進行了最小化
哈里,你好
下面的 VBA 代碼可以幫助您解決問題。 請在代碼中盡可能指定範圍。 感謝您的評論。

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'更新者 Extendoffice 20191017
將 xRg 作為範圍調暗,將 xCell 作為範圍調暗
將 xInt 調暗為整數
在錯誤恢復下一頁
如果 (Target.Count = 1) 那麼
If (Not Application.Intersect(Target, Me.Range("B:BP")) 什麼都沒有) 那麼
Application.EnableEvents = False
xInt = 目標行
Me.Range("A" & xInt).Value = 日期
Application.EnableEvents = True
如果結束
如果結束
END SUB
網站主持人對此評論進行了最小化
我認為第 7 行也需要更改...
網站主持人對此評論進行了最小化
有誰知道是否有辦法自動填充和鎖定以防止輸入者更改日期? 當我鎖定單元格並保護文檔時,單元格根本不會填充。
網站主持人對此評論進行了最小化
我不想在單元格中輸入日期而是輸入常數值,例如:數字或文本字符串。 請建議相同的代碼更改。
謝謝
網站主持人對此評論進行了最小化
你好,如果要輸入數字,請替換文字 日期 直接在代碼中。 要輸入文本字符串,請替換文本 日期 在代碼中 “你的文本字符串” (包括雙引號)。
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'更新者 Extendoffice 2020/09/28
將 xRg 作為範圍調暗,將 xCell 作為範圍調暗
在錯誤恢復下一頁
如果 (Target.Count = 1) 那麼
If (Not Application.Intersect(Target, Me.Range("B:B")) 什麼都沒有) 那麼 _
Target.Offset(0, -1) = "a text string" '或者直接輸入數字
Application.EnableEvents = False
設置 xRg = Application.Intersect(Target.Dependents, Me.Range("B:B"))
如果(不是XRG什麼都不是)
對於 xRg 中的每個 xCell
xCell.Offset(0, -1) = "a text string" '或者直接輸入數字
下一頁
如果結束
Application.EnableEvents = True
如果結束
END SUB
網站主持人對此評論進行了最小化
我正在將此代碼輸入到我的 excel 工作簿中,但沒有任何反應。 有人可以幫忙嗎? 理想情況下,我希望將某些內容放入 A 列時,將時間放入 B 列。
查看附件 (1 / 5)
網站主持人對此評論進行了最小化
嗨 chapo,試試下面的代碼。 希望我能幫上忙。 Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'更新者 Extendoffice 2020/10/12
將 xRg 作為範圍調暗,將 xCell 作為範圍調暗
在錯誤恢復下一頁
如果 (Target.Count = 1) 那麼
If (Not Application.Intersect(Target, Me.Range("A:A")) Is Nothing) Then _
Target.Offset(0, 1) = 時間
Application.EnableEvents = False
設置 xRg = Application.Intersect(Target.Dependents, Me.Range("A:A"))
如果(不是XRG什麼都不是)
對於 xRg 中的每個 xCell
xCell.Offset(0, 1) = 時間
下一頁
如果結束
Application.EnableEvents = True
如果結束
END SUB
網站主持人對此評論進行了最小化
您好,我使用您的代碼作為參考。 我想問是否有可能有以下幾點:1。 防止重複的日期條目2。 同時擁有 2 個宏輸入:Target.Offset(0,-1), Target,Offset(0,1)3。 可以自動將圖像插入單元格嗎?
試圖自己弄清楚,但我似乎無法在網上找到任何可以幫助我的資源
網站主持人對此評論進行了最小化
你好,這個公式很好用。 但是,有沒有辦法設置它,如果它是空的,它只更新列 A 中的單元格?  
網站主持人對此評論進行了最小化
嗨,馬特,對不起,我不太明白你的意思。 您能否嘗試更具體地說明您的問題,或提供您正在嘗試執行的操作的屏幕截圖?
這裡還沒有評論
載入更多
留下你的意見
以訪客身份發帖
×
評價此帖子:
0   字符
推薦地點

關注我們

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