сложные округления десятичных чисел в таблице Excel - PullRequest
0 голосов
/ 11 февраля 2012

Создана формула, например =(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

Надеюсь, мой вопрос имеет смысл.Спасибо

Ответы [ 3 ]

1 голос
/ 13 февраля 2012

Ваше пользовательское округление просто округляется до ближайшего 0,5 ..... но со смещением 0,15. Со значением, округляемым в A1, вы можете сделать это с помощью простой формулы, т.е.

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

или с вашим расчетом вместо A1, который становится

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

0 голосов
/ 11 февраля 2012

Вы можете определить функцию 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
0 голосов
/ 11 февраля 2012

Это немного запутанно, но это должно работать:

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

где A1 - ячейка, которую вы хотите округлить.

, например
enter image description here

Н.Б.

  • Это работает только для положительных чисел.
  • Диапазоны на самом деле:
    [0, 0.39999999...] [0.4 , 0.8999999...] ...
    или в равной степени:
    [0, 0.4) [0.4 , 0.9) ...
...