代码之家  ›  专栏  ›  技术社区  ›  gimmegimme

Excel函数,用于根据0.15而不是0.5对数字进行四舍五入

  •  0
  • gimmegimme  · 技术社区  · 6 年前

    以下是数据表:

    +---+------+---+
    |   |  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 回复  |  直到 6 年前
        1
  •  3
  •   Tim Williams    6 年前

    这较短:

    =ROUND(B1+0.35,0)
    
        2
  •  3
  •   Community miroxlav    4 年前

    如果可以使用VBA,则可以创建自定义项 ( U ser公司 D 已定义 F 函数) . 请记住,这将要求您将另存为 启用宏的工作簿 .

    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中保留。在本例中,我们只是将其命名为 customRound()

    然后,您可以将上述公式替换为:

    =customRound(B1)
    

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

    如何访问VBE?
    按可以访问VBE 中高音 + F11层 当您在工作簿中时。

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

    enter image description here

    现在,您可以将自定义项粘贴到这个新模块,一切都已就绪!

        3
  •  2
  •   Enigmativity    6 年前

    略长:

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