當資料輸入另一個儲存格時,需要今天的日期自動填入儲存格

當資料輸入另一個儲存格時,需要今天的日期自動填入儲存格

我希望每當將資料輸入儲存格 B5-B39 時,儲存格 C5-C39 會自動填入今天的日期。

我試圖讓它工作,=TODAY()但不知道如何建立公式。

答案1

我想說最簡單的方法是使用使用者定義的函數。當它引用的任何單元格發生更改時,該函數都會更新,因此您不必將其綁定到任何事件。

您的問題的函數是:

Function Updating_Date(dependent_cell as Range) As Date
  Updating_Date = Date
End Function

將程式碼放入工作簿中的模組後,您只需輸入=Updating_Date(B5)然後C5複製即可。只要 C 列中的值發生變化,C5 中的日期就會更新。

為了使日期僅在 B 列中的單元格不為空時才顯示,您可以在 C 列中的單元格中應用 if 公式,正如我在你問的另一個問題。只需輸入與我在此處顯示的相同的條件(即ISBLANK(B5)),如果條件為 true,則傳回值為空字串 ( ),如果條件為 false,則傳回""UDF ( )。Updating_Date(B5)

答案2

只要儲存格「A」發生更改,以下程式碼就會將今天的日期放入儲存格「B」中:

Private Sub Worksheet_Change(ByVal Target As Range)
' Auto Date
Dim Cell As Range
For Each Cell In Target
    If Cell.Column = Range("A:A").Column Then
        If Cell.Value <> "" Then
            Cells(Cell.Row, "B").Value = Int(Now)
        Else
            Cells(Cell.Row, "B").Value = ""
        End If
    End If
Next Cell
End Sub

需要將此程式碼放置在您希望發生此行為的工作表的 VBA 模組中。

答案3

無需 VBA 即可完成此操作。我需要根據 B 列輸入的值,在 C 列中填寫今天的日期。此公式可使其正確插入。

=IF(ISBLANK(B2)," ",NOW())

我將其放置在 C2 單元格中,因為那是我開始建立 C 列的位置。您可以將其放置在您要開始的任何列的儲存格中。例如,如果您的啟動儲存格是 F3,您應該將公式變更為

=IF(ISBLANK(F3), " ",NOW()). 

如果對應的日期儲存格是 K3,請將公式放在那裡。 (公式位於第一個儲存格後,您可以將其拖曳到該列的其餘儲存格中。)

此公式將日期儲存格保持為空,直到「開始」儲存格輸入值。輸入該值後,就會加入日期。如果刪除該值,Excel 將自動刪除日期。因此它並不完美,但如果您需要更複雜的東西,您可能需要 Excel 專家或為您處理此問題的程式。

答案4

AFIK,您需要透過 VBA 來完成此操作。您可以建立一個函數來監視工作表上的更改,僅過濾掉儲存格 B5-B39 上的更改並相應地更新 C 中的儲存格。

更新:您可能會知道使用 alt-F11 進入 VBA。

雙擊名為 Sheet1 的 Excel 物件或您感興趣的任何工作表(在左上角的樹列表中)以取得該工作表的程式碼。

從 2 個下拉清單中選擇「工作表」和「變更」。所以你會得到如下所示的程式碼:

Private Sub Worksheet_Change(ByVal Target As Range)

End Sub

變數“目標”現在可用,它是對更改的單元格的引用。

在這些行之間添加一些程式碼:

debug.Print Target

並按 ctrl-G 顯示立即視窗

在工作表中進行一些更改並切換回程式碼,您將看到您輸入的資料出現在「立即」視窗中。

現在更改程式碼if Target.,您將看到與 Target 變數相關的可能屬性的下拉清單。

透過一些更改,您可以獲得:

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Column = 2 And (Target.Row > 4 And Target.Row < 40) Then
        Debug.Print Target.Value
    End If

End Sub

現在僅列印您感興趣的範圍內的變更。

如果您想知道如何變更儲存格中的值,可以錄製手動執行此操作的巨集並檢查程式碼。希望你現在已經夠繼續下去了。如果沒有請告訴我。

相關內容