有没有办法让时间停止在excel中计数?

时间:2016-06-22 14:06:28

标签: excel excel-formula

在我的Excel表格中,我有以下代码:

 =IF(ISERROR(MATCH(D2,'Sheet 2'!A:A,0)),"",NOW())

这基本上检查D2中的值是否与表A中的任何值匹配:表2中的A,然后用NOW()填充带有日期和时间的单元格。

我的问题是日期和时间正在计算,因为我正在使用NOW()函数,而我需要的是日期,在某种程度上,拍摄日期的快照或冻结日期。我正在创建的这个表就像一个日志,因此我需要将日期保留在将其放入单元格时。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

如果将其粘贴到工作表后面的代码中,则可以自动运行(范围theCells是时间戳所在的列):

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim KeyCells As Range

    ' The variable KeyCells contains the cells that will
    ' cause an alert when they are changed.
    Set KeyCells = Range("theCells")

    If Not Application.Intersect(KeyCells, Range(Target.Address)) _
           Is Nothing Then

        If Range(Target.Address).Value <> "" Then
            Range(Target.Address).Copy
            Range(Target.Address).PasteSpecial xlPasteVaues
    End If
End Sub

答案 1 :(得分:0)

好的,所以我解决了它,在我的VBA中,我有以下代码,当我点击我的按钮时它几乎创建了一个日志文件,它在不同的单元格中获取各种信息并在下一个定义的可用行中填充它:

Sub copylog()
Dim LastRow As Long, ws As Worksheet
Dim wt As Worksheet

Set ws = Sheets("Create Log")
Set wt = Sheets("PDF Creation")
LastRow = ws.Range("A" & Rows.Count).End(xlUp).Row + 1
 ws.Range("A" & LastRow).Value = wt.Range("N11").Value
 ws.Range("B" & LastRow).Value = wt.Range("N12").Value
 ws.Range("C" & LastRow).Value = wt.Range("N13").Value
 ws.Range("D" & LastRow).Value = wt.Range("N14").Value
 ws.Range("E" & LastRow).Value = wt.Range("N15").Value
 ws.Range("F" & LastRow).Value = wt.Range("N16").Value
 ws.Range("G" & LastRow).Value = wt.Range("AT19").Value
 ws.Range("H" & LastRow).Value = wt.Range("AT21").Value
 ws.Range("I" & LastRow).Value = wt.Range("AT23").Value
 ws.Range("J" & LastRow).Value = wt.Range("AT25").Value
 ws.Range("K" & LastRow).Value = wt.Range("AT27").Value
 ws.Range("L" & LastRow).Value = wt.Range("A2").Value
 ws.Range("M" & LastRow).Value = Environ("Username")
 End Sub

上面的代码将填充下一个可用行中的表,例如,第一行:

 ws.Range("A" & LastRow).Value = wt.Range("N11").Value

这将获取在PDF创建工作表中填充N11的值,并在创建日志表中填充A列中的下一个可用行(使用复制和粘贴)。

解决了我的时间问题的那一行是:

 ws.Range("L" & LastRow).Value = wt.Range("A2").Value

在单元格A2中,我有NOW()函数,按钮将其复制并粘贴到L列的下一个可用空间中(复制并粘贴为TEXT)。