使用自定义决胜点进行 Excel 四舍五入

使用自定义决胜点进行 Excel 四舍五入

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 的输入本身在您的函数中将没有输出。)

其工作原理是,它会隔离输入的百分位数字,然后对其进行测试。例如,如果A115.77,您可以通过从内到外手动评估函数来查看 Excel 所做的计算:

  1. 15.77 * 100 -> 1577
  2. MOD(1577, 10) -> 7(这是余数运算)
  3. 7 >= 8 -> FALSE
  4. ROUNDDOWN(15.77, 1) -> 15.7

即使输入值的小数位超过 2 位,此方法也应该有效。既然您了解了公式的工作原理,那么您应该能够在需要执行特殊舍入操作时随时对其进行自定义。例如,您可以转到并将100ROUNDUP1000和 ROUNDDOWN 的第二个参数从 更改为 ,从而1查看千分之一位数字2


需要澄清的是:≥ 不是 Excel 能够理解的字符 - 通常,计算机理解>=为“大于或等于”和<=“小于或等于”。我在文本中写 ≥ 是因为人类能够理解它,但>=在公式中写 ≥ 是因为只有计算机能够理解它。

另外,我最初误解了您的问题,以为您希望所有小于(或等于)0.07 的数字都向下舍入,所有大于(或等于)0.08 的数字都向上舍入。但是,根据您的评论,您实际上是想将百分位为 7 的小数向下舍入到最接近的十分位,将百分位为 8 的小数向上舍入到最接近的十分位。我已相应地更新了上面的公式。

是的,你可以像这样使用该函数:

=IF(MOD(A1 * 100, 10) >= 8, ROUNDUP(A1, 1), ROUNDDOWN(A1, 1))

相关内容