Excel函数基于0.15而不是0.5

时间:2018-02-07 05:49:38

标签: excel function math excel-formula rounding

以下是数据表:

+---+------+---+
|   |  A   | B |
+---+------+---+
| 1 | 5.16 | 6 |
| 2 | 5.15 | 6 |
| 3 | 5.14 | 5 |
+---+------+---+

B列显示了根据阈值.15而不是标准0.5,将数字向上或向下舍入到最接近的整数所需的结果。

我提出以下功能是最好的:

=IF(B1-INT(B1)>=0.15, CEILING(B1, 1), FLOOR(B2, 1))

是否有其他解决方案涉及较少的嵌套函数或较少的整体长度?

3 个答案:

答案 0 :(得分:3)

如果你可以使用VBA,你可以创建一个UDF U ser D efined F unction)。请注意,这需要您另存为支持宏的工作簿

Function customRound(ByVal dNum As Double) As Double

    With Application.WorksheetFunction
        If (dNum - Int(dNum)) >= 0.15 Then
            customRound = .Ceiling(dNum, 1)
        Else
            customRound = .Floor(dNum, 1)
        End If
    End With

End Function

Protip:只要名称尚未在Excel中保留,您就可以将UDF重命名为您想要的任何名称。在此示例中,我们只是将其命名为customRound()

然后,您就可以用以下内容替换上述公式:

=customRound(B1)

如果您不熟悉VBA,请继续阅读:

  

如何访问VBE?
  当您进入工作簿时,可以通过按 Alt + F11 来访问VBE。

     

好的,所以我打开了VBE。现在我该如何应用这个UDF?
  在左侧窗格中,您将看到工作簿对象模块。这称为 Project Explorer 。您需要创建一个新模块,您可以通过right-clicking inside the Project Explorer > Insert > Module

来创建      

enter image description here

     

现在你可以将UDF粘贴到这个新模块中了,你已经完成了设置!

答案 1 :(得分:3)

这更短:

=ROUND(B1+0.35,0)

答案 2 :(得分:2)

稍长一点:

=IF(RC[-1]-INT(RC[-1])>=0.15,CEILING.MATH(RC[-1]),FLOOR.MATH(RC[-1]))