在某些公式将该值更改为其他值之前,是否可以使用先前的单元格值?
例如:
A1=1.78541
A1=trunc(1.78541)
我仍然可以使用以前的值 A1=1.78541 吗?
我知道我可以有 2 个单元格,所以我可以在这个例子中使用这两个值,但这不是我想要的。我想要 1 个单元格并使用两个值:1.78541 和 trunc(1.78541)。
最佳答案
这在有限的范围内是否可行。是的。推荐吗?不。我理解你的困境(数学、逻辑和规范实践与 bat -废话-疯狂的想法),并且已经遇到了来自那些拥有全新 MBA 学位的人的愚蠢要求,我想提供一种你可以使用的方法保留基础单元格值的小数点后五位精度,同时仅显示带三个小数位的截断(未舍入)值。
这只能在有限的范围内完成的原因是您需要为每个不同的值创建自定义数字格式。自定义数字格式的占位符数量有限,如果值经常更改,您将耗尽可用空间来创建新的。
出于演示的目的,我将 VBA 写入一个公共(public)子程序,该子程序处理任何选定的单元格或一组单元格。
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
选择任何一个或多个单元格以接受此处理并运行宏。如果值发生变化,除非您重新运行宏,否则它们的基础值将发生变化,但显示的值不会发生变化。
您可以在公式栏中看到 A2(用于计算的)的基础值为 1.78541,但显示的值为 1.785。该特定单元格的自定义数字格式为
1\.785
. A 列中单元格的基础值显示在 B 列中。C 列和 D 列展示了使用截断显示的真实值与实际使用截断值之间的差异。关于数量有限的自定义数字格式:这是受可用内存限制的一种。在我创建和测试这个时,我用了大约 175 种自定义数字格式的可用格式。自定义数字格式由单个工作簿保留,并非在所有 Excel 工作簿中都是全局的。
有一个用于删除自定义数字格式的 VBA 命令,但您必须先了解格式,然后才能使用它。例子:
ThisWorkbook.DeleteNumberFormat NumberFormat:="1\.785"
除了循环遍历工作簿中的每个单元格并检查该单元格中使用的内容之外,我无法判断是否实际使用了任何特定的自定义数字格式。我想查找 ► 从单元格中选择格式可能会有所帮助。
所以是的,这是可行的;只是不推荐。如果这是针对客户的,请确保他们知道(以书面形式!)这与公认的工作表和会计实践背道而驰,并且实现不仅范围有限,而且在保持不断变化的值(value)更新方面存在严重问题。
关于excel - 某些公式更改之前的上一个单元格值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29990917/