Excel如何讓日期單元格隨着某個單元格的修改而自動更新

前幾天,我在做一個報價底價的Excel文件,由於旅遊行業的報價很特殊,比如賓館的底價經常會發生變化,所以我在底價的excel文件中增加了一列:最後修改時間。這樣報價的時候就可以根據最後的更新時間來判斷當前的底價是否準確。

考慮到excel應該支持VB腳本,所以我就在網上搜索或者向朋友諮詢excel能否有這樣一個功能:當某個單元格的內容發生變化的時候,同行的日期單元格是否可以自動更新爲當前日期。然而很失望的是,無論是網絡搜索到的結果還是推特上朋友回答的結果多是直接顯示當前日期(在單元格輸入=now(),此後每次打開文件,該單元格的內容就會自動改成當前日期),而不是根據某個單元格發生變化而改變日期,當然建議我用VBA的朋友除外。

今天,我繼續搜索和摸索,總算是找出了相應的解決方案了,方法如下:

右擊sheet1標籤>查看代碼>粘貼下面的代碼 來源:http://club.excelhome.net/viewthread.php?tid=439225

Private Sub Worksheet_Change(ByVal Target As Range)
For Each c In Target.Cells ‘如果用填充等同時改變了多個單元格,則一個個的進行判斷
With c
If .Column = 2 Then ‘判斷被改變的單元格是否在B列
Application.EnableEvents = False
.Offset(0, -1) = Date ‘如果在B列,則在同行的A列填充當前系統日期
Application.EnableEvents = True
End If
End With
Next
End Sub

上面的代碼其實很容易看懂,不過我也還是給解釋一下

If .Column = 2 表示第二列的任意個單元格發生變化,如果你是第三個單元格,則改成 If .Column = 3,以此類推。

.Offset(0, -1) = Date 這個可以望文生義,offset表示偏移,比如.Offset(0, -1)表示同行左邊一列 .Offset(0,2)表示同行右邊數2列 ,.Offset(1,2)表示下面一行,右邊數2列,=date表示將這個單元格改成當前的日期。

華麗的解決了這個問題。

 

轉自:http://www.chengzhang.info/node/125

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章