某个公式之前的先前单元格值改变了它

在某些公式将该值更改为其他值之前,是否可以使用先前的单元格值?

例如:

A1=1.78541 A1=trunc(1.78541) 

我仍然可以使用以前的值A1 = 1.78541?

我知道我可以有2个单元格,所以我可以在这个例子中使用这两个值,但这不是我想要的。 我想有1个单元格,并使用两个值:1.78541和trunc(1.78541)。

这个怎么样:

 A1=1.78541 A2=trunc(A1) 

现在你可以使用A2了

这是有限的可行的吗? 是。 是否推荐? 不,我了解你的困境(math,逻辑和规范实践与蝙蝠狂欢的想法),并遇到了来自墙上的全新MBA的人的足够的白痴的请求,我想提供一种方法,你可以使用保留基本单元值的五位小数精度,同时仅显示具有三位小数的截尾( 不是四舍五入)的值。

这只能在有限的范围内完成的原因是,您将需要为每个不同的值创build一个自定义的数字格式。 自定义数字格式的占位符数量有限,如果值经常变化,您将运行可用空间来创build新的空间。

为了演示的目的,我将VBA写入一个处理选中的任何单元格或一组单元格的公共子集。

 Sub Display_Not_Truncate() On Error GoTo Fìn Application.ScreenUpdating = False Application.EnableEvents = False Dim rng As Range With Selection For Each rng In Selection If IsNumeric(rng) Then rng.NumberFormat = _ Replace(Replace(Application.RoundDown(rng.Value2, 3), "0", "\0"), ".", "\.") 'have to escape reserved characters like zeros and decimal points as literals End If Next rng End With Fìn: Application.EnableEvents = True Application.ScreenUpdating = True End Sub 

select任何细胞或细胞接受这种治疗并运行macros。 如果这些值发生变化,那么除非您重新运行macros,否则它们的基础值将会改变,但不会改变显示的值。

显示不截断

您可以在公式栏中看到,A2(用于计算的)的基础值是1.78541,但显示的值是1.785 。 该特定单元格的自定义数字格式是1\.785 。 列A中的单元格的基础值显示在列B中。列C和D展示了使用真值与截断显示并实际使用截断值之间的差异。

关于有限数量的自定义数字格式:这是有限的可用内存的东西之一。 当我创build和testing这个时,我用了大约175个自定义数字格式的可用格式。 自定义数字格式由个别工作簿保留,并不在所有Excel工作簿中为全局。

有一个用于删除自定义数字格式的VBA命令,但在使用之前必须知道格式。 例:

 ThisWorkbook.DeleteNumberFormat NumberFormat:="1\.785" 

我知道无法确定是否有任何特定的自定义数字格式实际上正在使用或不是循环遍历工作簿中的每个单元格,并检查该单元格中正在使用的内容。 我想find►从单元格中select格式可以帮助。

所以是的,这是可行的。 只是不推荐。 如果是针对客户,确保他们知道(以书面forms)这与已接受的工作表和会计惯例相反,并且实施不仅限于范围,而且在保持更改值更新方面存在严重问题。

一种select是使用数字格式来显示一个值,但计算是在基础值上执行的。
如果不可行,另一种select是在原始表格中存储两张表格(例如名称为“Raw”和“Trunc”),并在Trunc表格中存储公式,例如

 =Trunc(Raw!A1) 

或VBA将明确的值写入Trunc工作表。
例如在原材料事件上

 Private Sub Worksheet_Change(ByVal Target As Range) ThisWorkbook.Sheets("Trunc").Range(Target.Range.Address).Value = int(Target.value) End Sub