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方法根据时间剪切和粘贴值(每小时一次复制一个单元格的粘贴值)。 你必须在单元格中有一个公式来计算它们。 这听起来像是我用这个吠叫正确的树还是我错过了重点?