在Excel中保留以前的值在单元格错误

如果新计算出现错误,我想让电子表格上的单元格保留以前的值。 作为一个简单的例子:

ABC 1 1 2 =A1/B1 

单元格C1将包含0.5 。 现在,如果我将B1更改为0 ,我希望C1停留在0.5而不是显示#DIV/0! 。 我试过使用IFERROR函数,但它导致循环引用。

我想这样的工作在一个非macros的工作簿。

您必须使用迭代计算方法(具有所有缺点),或者使用像SpeedTools(成本为64和32位)Previous()函数或MoreFunc(免费,仅32位)Recall()函数。 SpeedTools和MoreFunc都是XLL插件,因此不需要启用macros的工作簿,但需要安装XLL插件。

您可以通过使用VBA和启用macros的工作簿来做到这一点:请参阅http://fastexcel.wordpress.com/2012/01/08/writing-efficient-vba-udfs-part-8-getting-所述-预先计算的值,从最主叫细胞/

免责声明:我开发和销售SpeedTools插件(适用于64位和64位Excel,都是64位和32位)

Easy ….首先在Excel选项中启用1次最大迭代的迭代计算……然后设置A1B1 (如2)和C1,如您的示例…………那么在D1:

 =IF(ISERROR(C1),D1,C1) 

然后设置B1 = 0

如果C1发生错误, D1将冻结到最后一个非错误值。

编辑#1

根据pnuts的评论:

 =IF(ISERROR(A1/B1),C1,A1/B1) 

可以放在C1中来实现确切的行为