excel电子表格中的复杂舍入小数

时间:2012-02-11 09:28:42

标签: excel formula

已创建示例=(E2+(G2*37))/290的公式,该公式根据输入的数据返回小数,但无法确定如何舍入答案以获得以下内容:

  1. If 0 to 0.39 round to 0
  2. If 0.4 to 0.89 round to 0.5
  3. If 0.9 to 1.39 round to 1
  4. If 1.4 to 1.89 round to 1.5
  5. If 1.9 to 2.39 round to 2 etc
  6. 希望我的问题有道理。感谢

3 个答案:

答案 0 :(得分:1)

您的自定义舍入只是四舍五入到最接近的0.5 .....但“偏移量”为0.15。要在A1中舍入值,您可以使用简单的公式来完成,即

=ROUND(A1*2-0.3,0)/2

或用你的计算代替A1成为

=ROUND((E2+G2*37)/290*2-0.3,0)/2

答案 1 :(得分:0)

这有点令人费解,但这应该有效:

=IF(A1 + 0.1 - ROUNDDOWN(A1+0.1;0) < 0.5; ROUNDDOWN(A1+0.1;0); ROUNDDOWN(A1+0.1;0) + 0.5)

其中A1是您想要舍入的单元格。

e.g。
enter image description here

N.B。

  • 这仅适用于正数。
  • 范围实际上是:
    [0, 0.39999999...] [0.4 , 0.8999999...] ...
    或同等地:
    [0, 0.4) [0.4 , 0.9) ...

答案 2 :(得分:0)

您可以定义一个VBA函数来为您执行此操作:

Public Function CustomRound(number As Double)
    Dim result As Double, fraction As Double

    fraction = number - Int(number)

    If number <= 0.39 Then
        result = 0
    ElseIf fraction >= 0.4 And fraction <= 0.9 Then
        result = Int(number) + 0.5
    Else
        result = Round(number, 0)
    End If

    CustomRound = result
End Function

你可以这样称呼:

=CustomRound((E2+(G2*37))/290)

示例:

=CustomRound(0.23) // 0
=CustomRound(1.58) //1.5
=CustomRound(2.12) //2