excel基于时间停止单元格更新

我有一个表格,可以根据满足标准的手来计算每个小时的预计件数。 随着时间的stream逝,用户正在将信息input到实际的项目列中。 当标准(位于工作表中的其他位置)发生更改时,整个预期的工件栏更新。 表格如下所示:

在这里输入图像说明

我试图做到这一点,如果当前时间是在第一列的时间之后,预期的块列不会更新,并将保持以前的值。 例如,如果在8点30分,预期的棋子是20点,那么在9点之后,8点和7点的棋子会保留他们预期的棋子值,而列的其余部分随着标准的变化而更新。

我不能为我的生活弄清楚如何做到这一点。 有可能在前端做,或者我应该写一些VBA代码来控制这个?

我应该如何解决这个问题? 谢谢!

这必须在VBA中编码。

由于“下拉单元格”中的值将会更改,所以简单的Excel公式不可能存储或访问以前的状态。

人们可以设想一些相当丑陋的解决方法,在每一个时间段都有一组不同的“下拉单元”。

一些VBAbuild议:

1)禁用自动计算

Private Sub Workbook_Open() Application.Calculation = xlCalculateManual End Sub 

然后只重新计算满足您的条件的单元格:

 Sub foo() If myCriterion Then Range("B3:D7").Calculate End If End Sub 

2)如果符合您的标准,则将公式replace为当前结果

 Private Sub Worksheet_Change(ByVal Target as Range) If myCriterion Then Range("B3").Value = Range("B3").Value End If End Sub 

请注意,如果您想在第2天使用相同的工作表,则必须还原这些单元格的以前的“公式”版本。

请记住用户交互。 您应该阻止用户input的某些单元格,以防止出现不希望的效果。

下面的方法的问题是,这本书必须是开放的, 但是可以使用application.OnTime方法根据时间剪切和粘贴值(每小时一次复制一个单元格的粘贴值)。 你必须在单元格中有一个公式来计算它们。 这听起来像是我用这个吠叫正确的树还是我错过了重点?