将if语句的值logging到当前的Cell Excel中

我已经创build和超越spreed表。 它从一个网站的外部数据拉入表1.在工作表2是我所有的计算完成。

在Sheet 2 .. B1是我的当前值每小时更新, M1是我的当前时间, F1是我的当前时间, A4:A27是我的date范围, B3:Y3是我的时间范围,而且我正在使用if声明。 =if(AND(F1=A4:A27), (M1=(B3:y3),B1,"")如果语句正常工作。 此搜索 您可以在20 – 2017年看到今天的date下有7的价值。 当时间变为8时,7值消失。 如下图所示。 由于if语句对于7的值不再是真的。 图像2 我正在寻找存储传递值的历史。 我怎样才能让if语句将值保存为一个值,而不是一个不断变化的引用。

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

请仔细检查下面代码中的单元格引用。

 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 

你正在寻找的是TrackChanges。 Excel有一个本地的TrackChangesfunction,在需要的时候,可以把你想要的历史导出到一个分离的表格。

但是,不利的一面是,你必须分享它。 更多信息可以在这里find:

跟踪共享工作簿中的更改

重要提示:本文解释了使用“共享工作簿”跟踪更改的旧方法。 共享工作簿function有很多限制,并已被共同创作取代。 共同创作不提供跟踪更改的能力。 但是,如果您和其他人同时打开该文件,则可以看到彼此的select和更改。 另外,如果文件存储在云中,则可以查看以前的版本,以便查看每个人的更改。 了解有关共同创作的更多信息。

如果你想使用VBA路线,你可以创build一个副本,每当新的数据添加到工作表(事件触发子)时,

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

一个例子是这样的: 如何获得Excel VBA中已更改单元格的旧值?