![使用自定义决胜点进行 Excel 四舍五入](https://linux22.com/image/1587244/%E4%BD%BF%E7%94%A8%E8%87%AA%E5%AE%9A%E4%B9%89%E5%86%B3%E8%83%9C%E7%82%B9%E8%BF%9B%E8%A1%8C%20Excel%20%E5%9B%9B%E8%88%8D%E4%BA%94%E5%85%A5.png)
Excel 中是否有允许四舍五入的函数,但四舍五入为 0.08 而不是 0.05?因此有两种情况:
A) 如果 > 0.08 美元,则向上舍入到最接近的 0.10 美元:
$15.78 -> $15.80
B) 如果小于 0.07 美元,则向下舍入到最接近的 0.10 美元:
$15.77 -> $15.70
是否有一个公式可以将 A 和 B 结合起来?
提前致谢。
答案1
单一配方形式:
B1=ROUND(A1-0.025,1)
或者以用户定义函数形式同样如此:
Public Function MyRound(sum As Currency) As Currency
MyRound = Round(sum - 0.025, 1)
End Function
将此代码放入一个公共模块,然后在单元格中使用此函数:
B1=MyRound(A1)
在这两种情况下 - 要查看小数点后 2 位数字,请正确格式化单元格。否则,尾随零将被截断。
答案2
你可以写一个!你描述的函数可以由以下元素构建:
因此,您可以像这样构建您的函数(对于示例单元格A1
):
= IF(MOD(A1 * 100, 10) >= 8, # if condition: get the hundredths digit & compare to 8
ROUNDUP(A1, 1), # case if true: round up to the nearest 1st decimal place
ROUNDDOWN(A1, 1) # case if false: round down to the nearest 1st decimal place
)
(请注意,我假设当您说 > $0.08 和 < $0.07 时,您实际上的意思是 ≥ 和 ≤,因为否则 0.07 和 0.08 的输入本身在您的函数中将没有输出。)
其工作原理是,它会隔离输入的百分位数字,然后对其进行测试。例如,如果A1
是15.77
,您可以通过从内到外手动评估函数来查看 Excel 所做的计算:
15.77 * 100 -> 1577
MOD(1577, 10) -> 7
(这是余数运算)7 >= 8 -> FALSE
ROUNDDOWN(15.77, 1) -> 15.7
即使输入值的小数位超过 2 位,此方法也应该有效。既然您了解了公式的工作原理,那么您应该能够在需要执行特殊舍入操作时随时对其进行自定义。例如,您可以转到并将100
ROUNDUP1000
和 ROUNDDOWN 的第二个参数从 更改为 ,从而1
查看千分之一位数字2
。
需要澄清的是:≥ 不是 Excel 能够理解的字符 - 通常,计算机理解>=
为“大于或等于”和<=
“小于或等于”。我在文本中写 ≥ 是因为人类能够理解它,但>=
在公式中写 ≥ 是因为只有计算机能够理解它。
另外,我最初误解了您的问题,以为您希望所有小于(或等于)0.07 的数字都向下舍入,所有大于(或等于)0.08 的数字都向上舍入。但是,根据您的评论,您实际上是想将百分位为 7 的小数向下舍入到最接近的十分位,将百分位为 8 的小数向上舍入到最接近的十分位。我已相应地更新了上面的公式。
是的,你可以像这样使用该函数:
=IF(MOD(A1 * 100, 10) >= 8, ROUNDUP(A1, 1), ROUNDDOWN(A1, 1))