Новости:

Новая редакция правил форума: 2.4. Если вопрос или ответ содержится во вложенном файле, все-равно кратко описывайте в сообщении вопрос или суть решения. Это необходимо, чтобы тему можно было найти через поиск.

Главное меню

Округление значения до нечётного числа, кроме.

Автор Gostello, 29.05.2012, 13:29

« назад - далее »

Gostello

  Добрый день, уважаемые форумчане!

  Подскажите, пожалуйста, формулу, как округлить значение вверх до целого, чтобы окончание числа было либо 3, либо 6, либо 9?

                  число     округление  
Например -     452,8          453
                    454,6         456
                    450,6         453

окончания д.б. 3,6,9.

Заранее благодарен!

upd скорректировал описание.

Михаил С.

Округляем в большую сторону?
457,2 -> 459 или 456?

зы.
Цитироватьдо целого НЕЧЁТНОГО числа, кроме 1 и 5?

окончания д.б. 3,6,9.
ЕМНИП - шесть - четное...

зы.зы.  Офис какой - 2007/2010 или 2003?
Отдельное спасибо можно на QiWi-кошелек 909-771-53-87 или ЯД 41001136675053

Barbarian12

Цитата: Gostello от 29.05.2012, 13:29
 Добрый день, уважаемые форумчане!

  Подскажите, пожалуйста, формулу, как округлить значение до целого НЕЧЁТНОГО числа, кроме 1 и 5?

                  число     округление  
Например -     452,8          453
                    454,6         456
                    450,6         453

окончания д.б. 3,6,9.

Заранее благодарен!
Если округление вверх, то попробуйте эту функцию:
=ЕСЛИ(ПРАВСИМВ(ОКРУГЛ(A1;0);1)="0";ОКРУГЛ(A1;0)+3;ВЫБОР(ПРАВСИМВ(ОКРУГЛ(A1;0);1);ОКРУГЛ(A1;0)+2;ОКРУГЛ(A1;0)+1;ОКРУГЛ(A1;0);ОКРУГЛ(A1;0)+3;ОКРУГЛ(A1;0)+2;ОКРУГЛ(A1;0)+3;ОКРУГЛ(A1;0)+2;ОКРУГЛ(A1;0)+1;ОКРУГЛ(A1;0)))
И это без учета четной цифры 6.

iron priest

=ЕСЛИ(ИЛИ(ПРАВСИМВ(ОКРВВЕРХ.ТОЧН(A1;1);1)="1";ПРАВСИМВ(ОКРВВЕРХ.ТОЧН(A1;1);1)="5");ОКРВВЕРХ.ТОЧН(A1;1)+2;ОКРВВЕРХ.ТОЧН(A1;1))

Gostello

#4
Извиняюсь за неверное описание. Округление числа вверх, до точного и окончание числа д.б. 3,6,9.  

 1235  - > 1236
 121,3 ->  123
 125   ->   126
 126,6 ->  129
 39,9  ->   43

Михаил С.  округление вверх  457,2 -> 459. Офис 2007

Barbarian12 работает, но уж больно формула большая. НО спасибо за ответ!


IKor

Как вам такая формула?
=ОКРВВЕРХ(A1;1)+3-ОСТАТ(ОКРВВЕРХ(A1;1);3)

iron priest

=ОКРУГЛ(A1;0)+ПРОСМОТР(--ПРАВСИМВ(ОКРУГЛ(A1;0));{0;1;2;3;4;5;6;7;8;9};{3;2;1;0;2;1;0;2;1;0})

iron priest

Цитата: IKor от 29.05.2012, 15:12
Как вам такая формула?
=ОКРВВЕРХ(A1;1)+3-ОСТАТ(ОКРВВЕРХ(A1;1);3)

для 39,9 результат 42

ZORRO2005

=МИН(ЕСЛИ(--ЗАМЕНИТЬ(ОКРВВЕРХ(A1;1);ДЛСТР(ОКРВВЕРХ(A1;1));1;{3;6;9})>=A1;--ЗАМЕНИТЬ(ОКРВВЕРХ(A1;1);ДЛСТР(ОКРВВЕРХ(A1;1));1;{3;6;9})))
формула массива
Яндекс-деньги: 410011658492153

ZORRO2005

Цитата: iron priest от 29.05.2012, 15:22
=ОКРУГЛ(A1;0)+ПРОСМОТР(--ПРАВСИМВ(ОКРУГЛ(A1;0));{0;1;2;3;4;5;6;7;8;9};{3;2;1;0;2;1;0;2;1;0})
33,1...33,4->33
36,1...36,4->36

Яндекс-деньги: 410011658492153

iron priest

прозевал что округление вверх

=ОКРУГЛВВЕРХ(A1;0)+ПРОСМОТР(--ПРАВСИМВ(ОКРУГЛВВЕРХ(A1;0));{0;1;2;3;4;5;6;7;8;9};{3;2;1;0;2;1;0;2;1;0})

Gostello

 Всем спасибо!
  Предложенные варианты работают, но я предполагал, что формулы будут попроще или чуть меньше  ???. Оказывается нет.

IKor - спасибо, но как уже указали, формула работает не совсем корректно, хотя по "размерам" и моим знаниям MS Excel то что нужно  ;).
     
iron priest - все работает, спасибо!

Serge 007

Цитата: IKor от 29.05.2012, 15:12
Как вам такая формула?
=ОКРВВЕРХ(A1;1)+3-ОСТАТ(ОКРВВЕРХ(A1;1);3)
Эта формула аналогична этой:
=ОКРВВЕРХ(A1;3)
Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Ю-money: 41001419691823 | WMR:126292472390

MCH

тоже отмечусь:
=ВПР(ОСТАТ(-ЦЕЛОЕ(-A1);10);{0;3:4;6:7;9};2)-ЦЕЛОЕ((9-A1)/10)*10

IKor

Цитата: iron priest от 29.05.2012, 15:31
Цитата: IKor от 29.05.2012, 15:12
Как вам такая формула?
=ОКРВВЕРХ(A1;1)+3-ОСТАТ(ОКРВВЕРХ(A1;1);3)

для 39,9 результат 42
Но в пределах от 1 до 10 работает же! а дальше - слишком много цифр для меня :)
Для общего случая придется усложнять... Кстати, спасибо Serge 007 за комментарий
=ОКРВВЕРХ(A1;3)+ОКРВВЕРХ(ЗНАЧЕН(ПРАВСИМВ(ОКРВВЕРХ(A1;3)));3)-ЗНАЧЕН(ПРАВСИМВ(ОКРВВЕРХ(A1;3)))
В общем принцип работает, но рекордно короткой формулы не получилось :(

В общем есть один совет: если эта функция должна работать не для одной ячейки, а для нескольких, то стоит запихнуть ее в именованный диапазон и назвать например Округление. К сожалению, в диапазоне нельзя передать параметр - из какой ячейки брать исходное значение. Но есть одна хитрость:
Если все округленные ячейки всегда находятся справа от исходных, то меняем в формуле A1 на ДВССЫЛ("RC[-1]";0) и назначаем получившейся формуле имя Округление:
=ОКРВВЕРХ(ДВССЫЛ("RC[-1]";0);3)+ОКРВВЕРХ(ЗНАЧЕН(ПРАВСИМВ(ОКРВВЕРХ(ДВССЫЛ("RC[-1]";0);3)));3)-ЗНАЧЕН(ПРАВСИМВ(ОКРВВЕРХ(ДВССЫЛ("RC[-1]";0);3)))
Теперь эту функцию можно вызывать так
=Округление
И для для всех ячеек, расположенных справа от исходных данных, она вернет правильное значение ... наверное :)

P.S. Аналогичный прием справедлив и для других приведенных здесь функция - берите ту, что понравится. Про функции массива - надо проверить.