记录if语句到当前Cell Excel的值

时间:2017-11-20 09:52:57

标签: excel excel-vba if-statement vba

我创造并且超越了spreed表。 它将外部数据从网站提取到表1中。 在表2中,我的所有计算都已完成。

在表2中.. B1 是我每小时更新的当前值, M1 是我目前的时间, F1 是我的当前时间, A4:A27 是我的日期范围, B3:Y3 是我的时间范围, 我正在使用if语句。=if(AND(F1=A4:A27), (M1=(B3:y3),B1,"") 如果声明工作正常。见下图。 image1 你可以在20-11-2017看到今天7日的价值低于7。当时间变为8时,7值消失。如下面的第二张图所示。因为if语句不再适用于7值。 image2 我希望存储传递值的历史记录。 如何允许if语句将值保存为值而不是不断更改的引用。

2 个答案:

答案 0 :(得分:1)

您可以使用以下代码使用Worksheet_Change事件。基本上它会检查更改的单元格,如果更改的单元格是“当前值”单元格,那么它将更新表格中的相关日期/时间单元格。

只需在下面的代码中仔细检查您的单元格引用。

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    'If the changed cell is the Current Value cell
    If Target.Address = "$B$1" Then

        Dim LastRow As Long
        Dim DateRange As Range
        Dim TimeRange As Range

        'Can change the sheet name to what ever your final sheet will be called
        With Target.Worksheet
            LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
            Set TimeRange = .Range("B3:Y3").Find(Hour(.Range("K1")))
            Set DateRange = .Range("A4:A" & LastRow).Find(.Range("F1"))
            .Cells(DateRange.Row, TimeRange.Column).Value = .Range("$B$1").Value
        End With

    End If

End Sub

答案 1 :(得分:0)

您正在寻找的是TrackChanges。 Excel具有本机TrackChanges功能,在需要时,可以将您想要的历史记录导出到单独的工作表。

然而,缺点是你必须分享它。更多信息可以在这里找到:

Track changes in a Shared Workbook

  

重要提示:本文介绍了使用“共享工作簿”跟踪更改的旧方法。共享工作簿功能有许多限制,已被共同创作取代。共同创作不提供跟踪变更的能力。但是,如果您和其他人同时打开文件,您可以看到彼此的选择和更改。此外,如果文件存储在云端,则可以查看过去的版本,以便查看每个人的更改。详细了解共同创作。

如果你想使用VBA路由,你可以创建一个sub来复制每次添加到工作表的新数据(事件触发子)

Private Sub Worksheet_Change(ByVal Target As Range)
    ' Do stuff when worksheet changes
End Sub

一个例子是:How do I get the old value of a changed cell in Excel VBA?