我在单元格=getprice()
中有一个易变函数说A1
,可能会成功,返回价格或失败,返回#REF!
。有没有办法在B1
中编写一个从A1
读取的公式,如果成功,则获取值,如果失败,保留上一轮值?
答案 0 :(得分:3)
如果启用“启用迭代计算”并将“最大迭代次数”设置为1
,则:
=IF(ISERROR(A1),B1,A1)
答案 1 :(得分:2)
我意识到这是一个迟到的回应,但这是另一个没有准确回答你的问题的选择,但我认为它仍然是有用的信息:
我最近发现,即使您从下拉列表中选择了易失性值,数据验证下拉列表也始终是非易失性的。从下拉列表中选择的值将无限期地保留在单元格中,直到您再次从下拉列表中重新选择。
在您的情况下,在单元格B1
中,您可以选择数据验证并使用以下设置进行设置:
通过这种方式,单元格A1
将不断更新,并且只要您想要"捕获" A1
中的此值,您只需从单元格B1
中的下拉列表中手动选择唯一可用选项,该选项将无限期地将该值存储在B1
中,直到您手动从投放中选择为止 - 再次列表。
我再次意识到这并没有准确回答你的问题,因为单元格B1
没有自动更新,但这种方法有两个主要优点:
它允许Excel基本上拥有内存并查看过去的事件(否则无法完成的事情)。
它实质上将挥发性细胞转化为非易失性细胞。
转换为非易失性单元格通常对提高电子表格效率特别有用。例如,在单元格A1
中,您可以使用volatile函数= NOW()
,然后使用此方法将此值快照复制到单元格B1
,以及工作簿中需要{{1}的所有单元格公式中的公式可以基于单元格NOW()
而不是B1
,因此有可能大幅度提高计算时间,因为A1
是非易失性的。