Формула Excel округляется после числа (30) вместо 50 до ближайшей сотни - PullRequest
0 голосов
/ 19 декабря 2018

Я думаю, что название говорит само за себя, возможно ли округлить число (до 30 в данном случае) до ближайшей сотни?Я считаю, что функция ROUND округляется после 50 по умолчанию.Я ищу формулу Excel, которая может это сделать.

Извините, я должен был привести пример.

Рассмотрим следующие числа (это всегда будут целые числа):

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

Ответы [ 4 ]

0 голосов
/ 19 декабря 2018

Я написал эту пользовательскую функцию, которая также учитывает числа ниже 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
0 голосов
/ 19 декабря 2018
=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
0 голосов
/ 19 декабря 2018

Может быть что-то вроде этого.

Он проверяет, равны ли последние два числа из целого числа (я полагаю, что у вас нет цифр) 30 или больше.В этом случае он округляется до ближайших 100. В противном случае он округляется до ближайших 100.

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

enter image description here

0 голосов
/ 19 декабря 2018

Для предоставленного образца:

=IF(1*RIGHT(A1,2)<30,A1-RIGHT(A1,2),A1+100-RIGHT(A1,2))
...