我创造并且超越了spreed表。 它将外部数据从网站提取到表1中。 在表2中,我的所有计算都已完成。
在表2中..
B1 是我每小时更新的当前值,
M1 是我目前的时间,
F1 是我的当前时间,
A4:A27 是我的日期范围,
B3:Y3 是我的时间范围,
我正在使用if语句。=if(AND(F1=A4:A27), (M1=(B3:y3),B1,"")
如果声明工作正常。见下图。
你可以在20-11-2017看到今天7日的价值低于7。当时间变为8时,7值消失。如下面的第二张图所示。因为if语句不再适用于7值。
我希望存储传递值的历史记录。
如何允许if语句将值保存为值而不是不断更改的引用。
答案 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?