我有一個Excel公式=IF(NOT(ISBLANK(A2)), TEXT(NOW(), "mm/dd/yyyy HH:ss"),"")
Excel的NOW()不應該更新現有的時間戳
我的問題是:當然,每次我打開這個表它更新與最近的時間戳相關的單元格的值。如果它已經存在,我不希望此時間戳發生更改。
我想以某種方式爲:如果A2不爲空,並沒有近期更新,然後不更新的時間戳更新別的。
我找一個內聯函數如果可能的話。
感謝
我有一個Excel公式=IF(NOT(ISBLANK(A2)), TEXT(NOW(), "mm/dd/yyyy HH:ss"),"")
Excel的NOW()不應該更新現有的時間戳
我的問題是:當然,每次我打開這個表它更新與最近的時間戳相關的單元格的值。如果它已經存在,我不希望此時間戳發生更改。
我想以某種方式爲:如果A2不爲空,並沒有近期更新,然後不更新的時間戳更新別的。
我找一個內聯函數如果可能的話。
感謝
您可以使用VBA宏這樣做:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Row = 2 Then
If Target.Value = "" Then
Cells(2, 2).Value = ""
Else
Cells(2, 2).Value = Format(Now, "mm/dd/yyyy HH:mm:ss")
End If
End If
End Sub
如果你寫的東西到單元格A2,然後時間戳會寫入單元格B2,當你刪除A2,B2也將被刪除。時間戳不會自動更新。
+1:您還可以將更改日期存儲到VBA公共或模塊變量中,並寫入VBA函數以返回可從Excel公式中調用的VBA函數(這將消除輸出單元上的代碼依賴關係)。 – RBarryYoung
感謝球員......我在尋找是否可以找到一種方法來修復它在公式....顯然,這是不可能從我擡頭。 – Vikram
我想你想記錄編輯的時間中的單元格區域(說A9:C20和D11:E12),如果任何細胞(A2:C2或E3:F4)進行編輯。
你可以這樣做:
右鍵單擊工作表標籤,然後選擇「查看代碼」,並粘貼以下代碼:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A2:C2,E3:F4")) Is Nothing Then Exit Sub
Range("A9:C20,D11:E12").Value = Now()
Range("A9:C20,D11:E12").NumberFormat = "mm/dd/yyyy hh:mm:ss"
End Sub
時間戳不會autoupdated除非任何(A2的: C2或E3:F4)再次編輯。
只需更改默認的迭代1
,所以重新計算一次之前停止。
回到這個:
文件>選項>公式>檢查手動計算>取消選中「重新計算工作簿之前保存'。 如果需要還檢查啓用迭代並如上所述將最大迭代設置爲1。
我不認爲你可以在一個單元格與Excel forumlas做到這一點。你可以用多個單元來完成。你也可以用VBA觸發變化事件來做到這一點,但這非常混亂和複雜。 – RBarryYoung
@RBarryYoung感謝您的評論! – Vikram
現在我很確定,即使使用多個單元格,也無法單獨使用Excel公式完成。VBA事件是它可以完成的唯一方式(或者VSTO事件)。 – RBarryYoung