Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Округление числа до целого кратного десятичной дроби - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Округление числа до целого кратного десятичной дроби (Формулы/Formulas)
Округление числа до целого кратного десятичной дроби
ArhAngel Дата: Среда, 29.05.2019, 21:12 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Подскажите, добрые люди:

Нужно округлить число до целого, которое будет кратно десятичной дроби. К примеру: округлить 1517 до целого до кратности 6,25. В ответе нужно получить целое число, которое без остатка поделится на 6,25

Спасибо!
 
Ответить
СообщениеПодскажите, добрые люди:

Нужно округлить число до целого, которое будет кратно десятичной дроби. К примеру: округлить 1517 до целого до кратности 6,25. В ответе нужно получить целое число, которое без остатка поделится на 6,25

Спасибо!

Автор - ArhAngel
Дата добавления - 29.05.2019 в 21:12
bmv98rus Дата: Среда, 29.05.2019, 21:28 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4099
Репутация: 766 ±
Замечаний: 0% ±

Excel 2013/2016
Код
=INT(INT(D14/E14)*MOD(E14;1))*E14/MOD(E14;1)


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Среда, 29.05.2019, 21:41
 
Ответить
Сообщение
Код
=INT(INT(D14/E14)*MOD(E14;1))*E14/MOD(E14;1)

Автор - bmv98rus
Дата добавления - 29.05.2019 в 21:28
ArhAngel Дата: Среда, 29.05.2019, 22:11 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
bmv98rus, Оо, Спасибо! Работает!
Завтра вечерком разберусь в формуле, а то самому интересно, как это происходит.
Спасибо!!!
PS. Формула работает, если дробь десятичная, а если целое число (кратность к 6), то выдает ошибку. Поэтому в общем случае начну вставлю ЕСЛИ и проверю, есть ли остаток и при его отсутствии запилю стандартное ОКРУГЛТ.
Также не работает, если кратность к 6,26 - но тут просто математически наверно не поделится. В моих задачах до такой точности не будет доходить и все гораздо проще.
...Охх, что же только ни придумаешь по работе, чтобы за тебя работал Эксель)

Еще раз спасибо!
 
Ответить
Сообщениеbmv98rus, Оо, Спасибо! Работает!
Завтра вечерком разберусь в формуле, а то самому интересно, как это происходит.
Спасибо!!!
PS. Формула работает, если дробь десятичная, а если целое число (кратность к 6), то выдает ошибку. Поэтому в общем случае начну вставлю ЕСЛИ и проверю, есть ли остаток и при его отсутствии запилю стандартное ОКРУГЛТ.
Также не работает, если кратность к 6,26 - но тут просто математически наверно не поделится. В моих задачах до такой точности не будет доходить и все гораздо проще.
...Охх, что же только ни придумаешь по работе, чтобы за тебя работал Эксель)

Еще раз спасибо!

Автор - ArhAngel
Дата добавления - 29.05.2019 в 22:11
bmv98rus Дата: Четверг, 30.05.2019, 07:53 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4099
Репутация: 766 ±
Замечаний: 0% ±

Excel 2013/2016
ArhAngel, первичные проверки две
1. то что знаменатель не целое число, в противном случае
Код
=FLOOR(D14;E14)

2. то что 1 делится без остатка на дробную часть
Код
=MOD(1/MOD(E14;1);1)=0

если все собрать то
Код
=IF(MOD(E14;1);IF(MOD(1/MOD(E14;1);1);0;INT(INT(D14/E14)*MOD(E14;1))*E14/MOD(E14;1));FLOOR(D14;E14))


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
СообщениеArhAngel, первичные проверки две
1. то что знаменатель не целое число, в противном случае
Код
=FLOOR(D14;E14)

2. то что 1 делится без остатка на дробную часть
Код
=MOD(1/MOD(E14;1);1)=0

если все собрать то
Код
=IF(MOD(E14;1);IF(MOD(1/MOD(E14;1);1);0;INT(INT(D14/E14)*MOD(E14;1))*E14/MOD(E14;1));FLOOR(D14;E14))

Автор - bmv98rus
Дата добавления - 30.05.2019 в 07:53
ArhAngel Дата: Четверг, 30.05.2019, 14:44 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Спасибо! Вторая сборка тоже работает, но первая выдает более близкий результат. Я ради интереса обе сборки оставлю и начну на практике применять, т.к. у меня числа гораздо проще и я слишком заморачиваюсь с универсальностью решения.
Математически тоже с утра на свежую голову пришло понимание, как Вы это реализовали.

Первая сборка, которую беру за основную рабочую у меня так стала выглядеть (если вдруг кто будет читать и понадобится):

Код
=ЕСЛИ($C$3-ЦЕЛОЕ($C$3)=0;ОКРУГЛТ($C$2;$C$3);ЦЕЛОЕ(ЦЕЛОЕ($C$2/$C$3)*ОСТАТ($C$3;1))*$C$3/ОСТАТ($C$3;1))

где $C$3 - число кратности, $C$2 - число, которое надо округлить.

Самое интересное, это работает (если решение существует) и при кратности к бесконечной десятичной дроби, к примеру 1510 округлить до 1,33(3) выдает правильный ответ 1508.

PS. На практике для чего нужно: Приходит товар с розничной ценой за 1кг, который потом фасуется по пакетам 100, 200г и др, в зависимости от позиции. Задача: в какую сторону округлить цену за 1кг, чтобы все виды фасовки автоматически имели цену в виде целого числа без копеек. На выходных допилю файлик до красоты и залью сюда итог.
 
Ответить
СообщениеСпасибо! Вторая сборка тоже работает, но первая выдает более близкий результат. Я ради интереса обе сборки оставлю и начну на практике применять, т.к. у меня числа гораздо проще и я слишком заморачиваюсь с универсальностью решения.
Математически тоже с утра на свежую голову пришло понимание, как Вы это реализовали.

Первая сборка, которую беру за основную рабочую у меня так стала выглядеть (если вдруг кто будет читать и понадобится):

Код
=ЕСЛИ($C$3-ЦЕЛОЕ($C$3)=0;ОКРУГЛТ($C$2;$C$3);ЦЕЛОЕ(ЦЕЛОЕ($C$2/$C$3)*ОСТАТ($C$3;1))*$C$3/ОСТАТ($C$3;1))

где $C$3 - число кратности, $C$2 - число, которое надо округлить.

Самое интересное, это работает (если решение существует) и при кратности к бесконечной десятичной дроби, к примеру 1510 округлить до 1,33(3) выдает правильный ответ 1508.

PS. На практике для чего нужно: Приходит товар с розничной ценой за 1кг, который потом фасуется по пакетам 100, 200г и др, в зависимости от позиции. Задача: в какую сторону округлить цену за 1кг, чтобы все виды фасовки автоматически имели цену в виде целого числа без копеек. На выходных допилю файлик до красоты и залью сюда итог.

Автор - ArhAngel
Дата добавления - 30.05.2019 в 14:44
_Boroda_ Дата: Четверг, 30.05.2019, 15:12 | Сообщение № 6
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
А почему у Вас 1517 к 6,25 получается 1500, а не 1525? у 1500 разница с исходным числом 17, а у 1525 - 8
Предлагаю такой вариант
Код
=ОКРУГЛТ(A1/B1;ЕСЛИОШИБКА(1/ОСТАТ(B1;1);1))*B1

А чтобы работало со всякими неправильнычи числами типа 6,26, можно вот так
Код
=ПОИСКПОЗ(МИН(ЕСЛИ(ОСТАТ(ОКРУГЛ(СТРОКА($1:$9999)*B1;12);1)=0;ABS(СТРОКА($1:$9999)*B1-A1)));ABS(СТРОКА($1:$9999)*B1-A1);)*B1
Формула массива. Вводится одновременным нажатием Ctrl+Shift+Enter
К сообщению приложен файл: 64196_1.xlsm (9.6 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеА почему у Вас 1517 к 6,25 получается 1500, а не 1525? у 1500 разница с исходным числом 17, а у 1525 - 8
Предлагаю такой вариант
Код
=ОКРУГЛТ(A1/B1;ЕСЛИОШИБКА(1/ОСТАТ(B1;1);1))*B1

А чтобы работало со всякими неправильнычи числами типа 6,26, можно вот так
Код
=ПОИСКПОЗ(МИН(ЕСЛИ(ОСТАТ(ОКРУГЛ(СТРОКА($1:$9999)*B1;12);1)=0;ABS(СТРОКА($1:$9999)*B1-A1)));ABS(СТРОКА($1:$9999)*B1-A1);)*B1
Формула массива. Вводится одновременным нажатием Ctrl+Shift+Enter

Автор - _Boroda_
Дата добавления - 30.05.2019 в 15:12
sboy Дата: Четверг, 30.05.2019, 15:57 | Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
[offtop]
имели цену в виде целого числа

почему у Вас получается 1500, а не 1525?

Александр, не разгоняйте инфляцию в стране :)


Яндекс: 410016850021169
 
Ответить
Сообщение[offtop]
имели цену в виде целого числа

почему у Вас получается 1500, а не 1525?

Александр, не разгоняйте инфляцию в стране :)

Автор - sboy
Дата добавления - 30.05.2019 в 15:57
ArhAngel Дата: Четверг, 30.05.2019, 18:23 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Добрый день!
На работе нашлось время запилить итоговую версию и все оформить. Прикрепил к сообщению.
Т.к. число нужно округлять до кратности сразу нескольким числам, то в одном варианте просто перемножил числа, кратность которым должна быть. Во втором варианте нашел Наименьшее общее кратное. И сделал соответственно две сборки от bmv98rus

Потестировал различные числа кратности.. иногда работают все 4 варианта, иногда 1-2 разных и с разными результатами. Поэтому для проверки в рабочих условиях оставляю все 4 варианта. В прилагаемом файлике выставил от балды наиболее интересный вариант, где работают разные сборки с разными результатами, но оптимальное правильное решение одно.
PS. Для моих задач этого более чем достаточно и на этом остановлюсь, дабы слишком сильно не заморачиваться... пойду теперь оптимизировать crm-систему)
PPS. _Boroda_, Ваше решение тоже поизучаю на досуге с целью повышения грамотности владением Экселем. Поэтому тоже большое спасибо! Обязательно изучу новые для себя формулы, я еще только начинающий пользователь.
К сообщению приложен файл: 5460766.xlsx (11.6 Kb)
 
Ответить
СообщениеДобрый день!
На работе нашлось время запилить итоговую версию и все оформить. Прикрепил к сообщению.
Т.к. число нужно округлять до кратности сразу нескольким числам, то в одном варианте просто перемножил числа, кратность которым должна быть. Во втором варианте нашел Наименьшее общее кратное. И сделал соответственно две сборки от bmv98rus

Потестировал различные числа кратности.. иногда работают все 4 варианта, иногда 1-2 разных и с разными результатами. Поэтому для проверки в рабочих условиях оставляю все 4 варианта. В прилагаемом файлике выставил от балды наиболее интересный вариант, где работают разные сборки с разными результатами, но оптимальное правильное решение одно.
PS. Для моих задач этого более чем достаточно и на этом остановлюсь, дабы слишком сильно не заморачиваться... пойду теперь оптимизировать crm-систему)
PPS. _Boroda_, Ваше решение тоже поизучаю на досуге с целью повышения грамотности владением Экселем. Поэтому тоже большое спасибо! Обязательно изучу новые для себя формулы, я еще только начинающий пользователь.

Автор - ArhAngel
Дата добавления - 30.05.2019 в 18:23
bmv98rus Дата: Четверг, 30.05.2019, 18:41 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4099
Репутация: 766 ±
Замечаний: 0% ±

Excel 2013/2016
Еду домой. Думаю, фигню для общего случая состряпал. 1 делить на остаток бред. А тут уже работа кипит.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
СообщениеЕду домой. Думаю, фигню для общего случая состряпал. 1 делить на остаток бред. А тут уже работа кипит.

Автор - bmv98rus
Дата добавления - 30.05.2019 в 18:41
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Округление числа до целого кратного десятичной дроби (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!