Excel 公式在数字 (30) 之后四舍五入而不是 50 到最接近的百位

Excel formula round up after number (30) instead of 50 to nearest hundred

我想标题已经说明了一切,是否可以将数字(本例中为 30)四舍五入到最接近的百位?我相信 ROUND 函数默认在 50 之后四舍五入。我正在寻找可以做到这一点的 Excel 公式。

抱歉,我应该提供一些示例。

考虑以下数字(总是整数):

Given   Expected
120     100
130     200
131     200
5410    5400
5430    5500

现在提供的示例:

=IF(1*RIGHT(A1,2)<30,A1-RIGHT(A1,2),A1+100-RIGHT(A1,2))
=IF(A3-INT(A3)<0.3,INT(A3),INT(A3)+1)

编辑:

这只是您可能前进的方向。它指的是正整数。但它需要大量的工作,例如当我在一种情况下将因子更改为 2 时,dblDif 最终变为 1.9999999999 而不是 2。所以仅将其用作一个想法:

Function R30(Num As Double, Round As Integer, Optional Factor As Integer) _
    As Double

  If IsMissing(Factor) Then Factor = 3

  Dim dblNum As Double
  Dim dblDif As Double

  dblNum = Num / 10 ^ Round
  dblDif = (dblNum - Int(dblNum)) * 10 ^ Round

  If dblDif <> 0 Then
    If dblDif < Factor * 10 ^ (Round - 1) Then
      R30 = Int(dblNum) * 10 ^ Round
     Else
      R30 = (Int(dblNum) + 1) * 10 ^ Round
    End If
   Else
    R30 = Num
  End If

End Function

Sub R30use()
  Debug.Print R30(133, 1, 3)
End Sub

也许是这样的。

它检查整数中的最后两个数字(我假设您没有数字)是否等于或大于 30。如果是这种情况,它将向上舍入到最接近的 100。否则它将向下舍入到最接近的 100。

=IF(VALUE(RIGHT(A1,2))>=30,ROUNDUP(A1,-2),ROUNDDOWN(A1,-2))

我写了这个自定义函数,它也考虑了 0 以下的数字。

Function CustomRound(lngValue As Long)
    Dim lngValueMin   As Long
    Dim lngValuePart  As Long
    Dim intNeg        As Integer

    If lngValue < 0 Then
        lngValue = lngValue * -1
        intNeg = -1
    Else
        intNeg = 1
    End If

    lngValueMin = lngValue - Right(lngValue, 2)
    lngValuePart = Right(lngValue, 2)

    If lngValuePart < 30 Then
      CustomRound = lngValueMin * intNeg
    Else
      CustomRound = (lngValue + (100 - lngValuePart)) * intNeg
    End If
End Function