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

Вход

Регистрация

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

 

= Мир MS Excel/Возможно ли в Excel распределить целое число по процентам - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Возможно ли в Excel распределить целое число по процентам
abwabw Дата: Среда, 23.10.2013, 11:58 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Ситуация: Есть таблица со значениями целого типа (столбец А) и процентами (строка 1) по которым надо распределить это целое число, при этом получаемые значения тоже должны быть целыми (пример во вложении).
Проблема: если пойти по простому пути (который понятно, что не верный), т.е. использовать формулу округления, то распределение в некоторых случаях правильным не получается. Т.е. если суммировать полученный результат то он не совпадает с исходным числом (столбец АС)
Вопрос: есть ли в Excel стандартная функция для решения моей проблемы? Если такой функции нет, то как решить мою проблему?
К сообщению приложен файл: Example.xls (68.5 Kb)


Сообщение отредактировал abwabw - Среда, 23.10.2013, 11:58
 
Ответить
СообщениеСитуация: Есть таблица со значениями целого типа (столбец А) и процентами (строка 1) по которым надо распределить это целое число, при этом получаемые значения тоже должны быть целыми (пример во вложении).
Проблема: если пойти по простому пути (который понятно, что не верный), т.е. использовать формулу округления, то распределение в некоторых случаях правильным не получается. Т.е. если суммировать полученный результат то он не совпадает с исходным числом (столбец АС)
Вопрос: есть ли в Excel стандартная функция для решения моей проблемы? Если такой функции нет, то как решить мою проблему?

Автор - abwabw
Дата добавления - 23.10.2013 в 11:58
KuklP Дата: Среда, 23.10.2013, 12:03 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеКросс:
http://www.planetaexcel.ru/forum....D=52065

Автор - KuklP
Дата добавления - 23.10.2013 в 12:03
abwabw Дата: Среда, 23.10.2013, 12:26 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
А ещё на sql.ru и excel-vba.ru и что?
 
Ответить
СообщениеА ещё на sql.ru и excel-vba.ru и что?

Автор - abwabw
Дата добавления - 23.10.2013 в 12:26
Serge_007 Дата: Среда, 23.10.2013, 12:35 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
http://forum.msexcel.ru/index.php/topic,2703.0.html

Автор - Serge_007
Дата добавления - 23.10.2013 в 12:35
AndreTM Дата: Среда, 23.10.2013, 19:34 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 501 ±
Замечаний: 0% ±

2003 & 2010
А вот так (см. Лист2) ?
К сообщению приложен файл: 2-6852-1-1-.xls (89.0 Kb)


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеА вот так (см. Лист2) ?

Автор - AndreTM
Дата добавления - 23.10.2013 в 19:34
Poltava Дата: Среда, 23.10.2013, 19:47 | Сообщение № 6
Группа: Друзья
Ранг: Форумчанин
Сообщений: 232
Репутация: 50 ±
Замечаний: 0% ±

Цитата
А ещё на sql.ru и excel-vba.ru и что?
Да собственно ничего если делать все правильно и с уважением относиться к участникам форумов! В правилах хорошего тона давать крос ссылки на все заведенные вами темы. Это значительно упрощает жизнь участников ведь 60% посетителей всех этих форумов ОДНИ И ТЕЖЕ ЛЮДИ!!!
 
Ответить
Сообщение
Цитата
А ещё на sql.ru и excel-vba.ru и что?
Да собственно ничего если делать все правильно и с уважением относиться к участникам форумов! В правилах хорошего тона давать крос ссылки на все заведенные вами темы. Это значительно упрощает жизнь участников ведь 60% посетителей всех этих форумов ОДНИ И ТЕЖЕ ЛЮДИ!!!

Автор - Poltava
Дата добавления - 23.10.2013 в 19:47
The_Prist Дата: Среда, 23.10.2013, 20:39 | Сообщение № 7
Группа: Друзья
Ранг: Участник
Сообщений: 85
Репутация: 22 ±
Замечаний: 0% ±

2010
А ещё на sql.ru и excel-vba.ru и что?

Да ничего, в принципе. Просто так Вы показываете, что Вам наплевать на других участников и печетесь только о своей проблеме. Правда, остальные тоже это понимают, т.к. большая часть завсегдатаев обитает на всех форумах, на которых Вы отметились. Следовательно им тоже становится наплевать на Вас с Вашей проблемой - ведь она Ваша, как ни крути. Не их.
Создавая одну тему на нескольких форумах сразу(кросспостинг) Ваше право не давать ссылки, но по правилам хорошего тона делать это не следует, т.к. если на одном из них дадут какое-то решение, то на других форумах участники вправе знать, что оно есть и можно не пытаться идти тем же путем, что экономит время помогающим. И не только им. Выданное решение может оказаться неподходящим для Вас и Вы будете ждать другого. Но на других форумах с большой вероятностью будут предлагать такое же. Вот тут Вы скажете: "Мне это уже предлагали, не то". Помогающему будет жаль своего впустую протраченного на Вас времени. И ладно бы просто потратил и не подошло - Вы уже видели это решение на другом форуме, но не сказали, что оно есть. Если бы Вы сразу дали ссылку - он, возможно, сразу бы искал иное решение, т.к. владел бы информацией по развитию ситуации на дружественных форумах.
Как следствие - можете остаться вообще без решения. Так что указывать ссылки или нет - решать Вам.


Errare humanum est, stultum est in errore perseverare
 
Ответить
Сообщение
А ещё на sql.ru и excel-vba.ru и что?

Да ничего, в принципе. Просто так Вы показываете, что Вам наплевать на других участников и печетесь только о своей проблеме. Правда, остальные тоже это понимают, т.к. большая часть завсегдатаев обитает на всех форумах, на которых Вы отметились. Следовательно им тоже становится наплевать на Вас с Вашей проблемой - ведь она Ваша, как ни крути. Не их.
Создавая одну тему на нескольких форумах сразу(кросспостинг) Ваше право не давать ссылки, но по правилам хорошего тона делать это не следует, т.к. если на одном из них дадут какое-то решение, то на других форумах участники вправе знать, что оно есть и можно не пытаться идти тем же путем, что экономит время помогающим. И не только им. Выданное решение может оказаться неподходящим для Вас и Вы будете ждать другого. Но на других форумах с большой вероятностью будут предлагать такое же. Вот тут Вы скажете: "Мне это уже предлагали, не то". Помогающему будет жаль своего впустую протраченного на Вас времени. И ладно бы просто потратил и не подошло - Вы уже видели это решение на другом форуме, но не сказали, что оно есть. Если бы Вы сразу дали ссылку - он, возможно, сразу бы искал иное решение, т.к. владел бы информацией по развитию ситуации на дружественных форумах.
Как следствие - можете остаться вообще без решения. Так что указывать ссылки или нет - решать Вам.

Автор - The_Prist
Дата добавления - 23.10.2013 в 20:39
jakim Дата: Среда, 23.10.2013, 23:03 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 1216
Репутация: 316 ±
Замечаний: 0% ±

Excel 2010
Может так.
К сообщению приложен файл: Example-1.xlsx (16.2 Kb)
 
Ответить
Сообщение
Может так.

Автор - jakim
Дата добавления - 23.10.2013 в 23:03
abwabw Дата: Четверг, 24.10.2013, 07:32 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Спасибо за участие.
А то я математику уже нашёл (Метод Хэйра-Нимейера (метод Гамильтона), а так же методы "делителей" (Джефферсона–д’Ондта, Вебстера–Сент-Лагюе, и т.д.)). Но алгоритмы там сложно реализуемые без использования VBA.
 
Ответить
СообщениеСпасибо за участие.
А то я математику уже нашёл (Метод Хэйра-Нимейера (метод Гамильтона), а так же методы "делителей" (Джефферсона–д’Ондта, Вебстера–Сент-Лагюе, и т.д.)). Но алгоритмы там сложно реализуемые без использования VBA.

Автор - abwabw
Дата добавления - 24.10.2013 в 07:32
MCH Дата: Четверг, 24.10.2013, 12:56 | Сообщение № 10
Группа: Админы
Ранг: Старожил
Сообщений: 2004
Репутация: 752 ±
Замечаний: ±

Была похожая тема http://www.excelworld.ru/forum/2-2074-1
Алгоритм следующий:
Цитата
1. Нормально по правилам округления получаем округленные значения во всех ячейках.

2. Для каждой ячейки вычисляем разницу [исходное значение] - [округленное].

3. Смотрим насколько отличается общая сумма по округленным от заданной суммы.

4. Если эта общая разница [заданная]-[округленная] положительна, то добавляем единичку в то значения, у которого разница по конкретной строке [исходное]-[округленное] положительна и максимальна. Затем во второе наибольшее значение, затем в третье и так далее, пока не будет исчерпана вся общая разница.

5. Если эта общая разница [заданная]-[округленная] отрицательна, то отнимаем единичку от того значения, у которого разница по конкретной строке [исходное]-[округленное] отрицательна и минимальна (т.е. наименьшая с учетом знака). Затем из второго наименьшего, затем из третьего и так далее, пока не будет исчерпана вся общая разница.

При этом достигается наименьшее отклонение от исходных значений
Решение можно адаптировать под текущую задачу, либо реализовать макросом/UDF


Сообщение отредактировал MCH - Четверг, 24.10.2013, 14:17
 
Ответить
СообщениеБыла похожая тема http://www.excelworld.ru/forum/2-2074-1
Алгоритм следующий:
Цитата
1. Нормально по правилам округления получаем округленные значения во всех ячейках.

2. Для каждой ячейки вычисляем разницу [исходное значение] - [округленное].

3. Смотрим насколько отличается общая сумма по округленным от заданной суммы.

4. Если эта общая разница [заданная]-[округленная] положительна, то добавляем единичку в то значения, у которого разница по конкретной строке [исходное]-[округленное] положительна и максимальна. Затем во второе наибольшее значение, затем в третье и так далее, пока не будет исчерпана вся общая разница.

5. Если эта общая разница [заданная]-[округленная] отрицательна, то отнимаем единичку от того значения, у которого разница по конкретной строке [исходное]-[округленное] отрицательна и минимальна (т.е. наименьшая с учетом знака). Затем из второго наименьшего, затем из третьего и так далее, пока не будет исчерпана вся общая разница.

При этом достигается наименьшее отклонение от исходных значений
Решение можно адаптировать под текущую задачу, либо реализовать макросом/UDF

Автор - MCH
Дата добавления - 24.10.2013 в 12:56
MCH Дата: Четверг, 24.10.2013, 14:07 | Сообщение № 11
Группа: Админы
Ранг: Старожил
Сообщений: 2004
Репутация: 752 ±
Замечаний: ±

Метод Хэйра-Нимейера на формулах

PS: Реализовано не совсем так, как описано в методе, но на мой взгляд так более справедливо, относительная ошибка минимальна
К сообщению приложен файл: _-.xls (96.5 Kb)


Сообщение отредактировал MCH - Пятница, 25.10.2013, 09:00
 
Ответить
СообщениеМетод Хэйра-Нимейера на формулах

PS: Реализовано не совсем так, как описано в методе, но на мой взгляд так более справедливо, относительная ошибка минимальна

Автор - MCH
Дата добавления - 24.10.2013 в 14:07
MCH Дата: Пятница, 25.10.2013, 08:47 | Сообщение № 12
Группа: Админы
Ранг: Старожил
Сообщений: 2004
Репутация: 752 ±
Замечаний: ±

Сделал сравнение, разных алгоритмов (см. файл в предыдущем посте)
Не смотря на то, что алгоритм предложенный AndreTM (jakim предложил аналогичный) прост в реализации, он дает определенную погрешность и зависит от сортировки исходных данных.
Наименьшее квадратичное отклонение дает метод, находящийся на листе "Вар.2",
"Вар.1" - дает наименьшее относительное отклонение


Сообщение отредактировал MCH - Пятница, 25.10.2013, 08:50
 
Ответить
СообщениеСделал сравнение, разных алгоритмов (см. файл в предыдущем посте)
Не смотря на то, что алгоритм предложенный AndreTM (jakim предложил аналогичный) прост в реализации, он дает определенную погрешность и зависит от сортировки исходных данных.
Наименьшее квадратичное отклонение дает метод, находящийся на листе "Вар.2",
"Вар.1" - дает наименьшее относительное отклонение

Автор - MCH
Дата добавления - 25.10.2013 в 08:47
AndreTM Дата: Пятница, 25.10.2013, 09:22 | Сообщение № 13
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 501 ±
Замечаний: 0% ±

2003 & 2010
Михаил, я это отлично понимаю yes

С другой стороны, теория говорит, что задача поставлена немного некорректно. Потому что потеря точности вычислений (в данной задаче) при округлении до целых - очень велика. Действительно, проценты (что уже есть сотые доли) заданы с точностью до двух знаков после запятой - соответственно, "точные" вычисления возможны только с учётом четырех знаков. Даже использование округления до двух знаков - приводит СКО в среднем к 0.015.
Так что тут всё уже зависит от исходных требований - то ли увеличивать разрядность, выигрывая в скорости/простоте расчёта, то ли усложнять алгоритм, но выигрывать в точности...


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеМихаил, я это отлично понимаю yes

С другой стороны, теория говорит, что задача поставлена немного некорректно. Потому что потеря точности вычислений (в данной задаче) при округлении до целых - очень велика. Действительно, проценты (что уже есть сотые доли) заданы с точностью до двух знаков после запятой - соответственно, "точные" вычисления возможны только с учётом четырех знаков. Даже использование округления до двух знаков - приводит СКО в среднем к 0.015.
Так что тут всё уже зависит от исходных требований - то ли увеличивать разрядность, выигрывая в скорости/простоте расчёта, то ли усложнять алгоритм, но выигрывать в точности...

Автор - AndreTM
Дата добавления - 25.10.2013 в 09:22
magos1986 Дата: Понедельник, 10.06.2024, 09:41 | Сообщение № 14
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

2016
AndreTM,

Друзья, помогите, пожалуйста, доработать "формулу".
Похоже, мои знания в Excel еще не настолько велики, чтобы самостоятельно разобраться.
Вот файл, который ранее выкладывали здесь – он идеально подходит для решения моих задачи, но есть один момент: необходимо, чтобы количество было кратно определенному числу.
Получается, что округление сейчас происходит в диапазоне на "+1", а, нужно например, на "+12". Я добавил столбец "B" в файле, по которому нужно, чтобы числа были кратны.

Заранее Спасибо!
К сообщению приложен файл: zapros.xls (101.5 Kb)


Василий
 
Ответить
СообщениеAndreTM,

Друзья, помогите, пожалуйста, доработать "формулу".
Похоже, мои знания в Excel еще не настолько велики, чтобы самостоятельно разобраться.
Вот файл, который ранее выкладывали здесь – он идеально подходит для решения моих задачи, но есть один момент: необходимо, чтобы количество было кратно определенному числу.
Получается, что округление сейчас происходит в диапазоне на "+1", а, нужно например, на "+12". Я добавил столбец "B" в файле, по которому нужно, чтобы числа были кратны.

Заранее Спасибо!

Автор - magos1986
Дата добавления - 10.06.2024 в 09:41
DrMini Дата: Понедельник, 10.06.2024, 09:54 | Сообщение № 15
Группа: Друзья
Ранг: Старожил
Сообщений: 1869
Репутация: 266 ±
Замечаний: 0% ±

Excel LTSC 2024 RUS
Я добавил столбец "B" в файле, по которому нужно, чтобы числа были кратны.

Так надо?
Код
=ОКРУГЛТ(ОТБР($A2*C$1/СУММ($C$1:$EH$1))+(@ИНДЕКС(ЧАСТОТА(ОСТАТ($A2*$C$1:$EH$1/СУММ($C$1:$EH$1);1)-СТОЛБЕЦ($C$1:$EH$1)/10000;ОСТАТ($A2*C$1/СУММ($C$1:$EH$1);1)-СТОЛБЕЦ(C$1)/10000);2)<$A2-СУММПРОИЗВ(ОТБР($A2*$C$1:$EH$1/СУММ($C$1:$EH$1))));$B2)
К сообщению приложен файл: 6899592.xls (249.5 Kb)
 
Ответить
Сообщение
Я добавил столбец "B" в файле, по которому нужно, чтобы числа были кратны.

Так надо?
Код
=ОКРУГЛТ(ОТБР($A2*C$1/СУММ($C$1:$EH$1))+(@ИНДЕКС(ЧАСТОТА(ОСТАТ($A2*$C$1:$EH$1/СУММ($C$1:$EH$1);1)-СТОЛБЕЦ($C$1:$EH$1)/10000;ОСТАТ($A2*C$1/СУММ($C$1:$EH$1);1)-СТОЛБЕЦ(C$1)/10000);2)<$A2-СУММПРОИЗВ(ОТБР($A2*$C$1:$EH$1/СУММ($C$1:$EH$1))));$B2)

Автор - DrMini
Дата добавления - 10.06.2024 в 09:54
magos1986 Дата: Понедельник, 10.06.2024, 10:00 | Сообщение № 16
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

2016
DrMini,

Большое спасибо!

Единственное, число, которое указано для распределения в столбце "A", должно быть равно сумме чисел, по которым производилось распределение в столбце "EL".
Возможно сделать так?


Василий
 
Ответить
СообщениеDrMini,

Большое спасибо!

Единственное, число, которое указано для распределения в столбце "A", должно быть равно сумме чисел, по которым производилось распределение в столбце "EL".
Возможно сделать так?

Автор - magos1986
Дата добавления - 10.06.2024 в 10:00
Nic70y Дата: Понедельник, 10.06.2024, 16:49 | Сообщение № 17
Группа: Друзья
Ранг: Экселист
Сообщений: 9001
Репутация: 2367 ±
Замечаний: 0% ±

Excel 2010
вдруг правильно
Код
=ОКРУГЛ($A2/$EH$1*СТОЛБЕЦ(A1)/$B2;)*$B2-СУММ($B2:B2)+$B2

[p.s.]EH1 = число столбцов[/p.s.]
К сообщению приложен файл: 6794165.xls (76.0 Kb)


ЮMoney 41001841029809

Сообщение отредактировал Nic70y - Понедельник, 10.06.2024, 16:51
 
Ответить
Сообщениевдруг правильно
Код
=ОКРУГЛ($A2/$EH$1*СТОЛБЕЦ(A1)/$B2;)*$B2-СУММ($B2:B2)+$B2

[p.s.]EH1 = число столбцов[/p.s.]

Автор - Nic70y
Дата добавления - 10.06.2024 в 16:49
magos1986 Дата: Пятница, 14.06.2024, 11:26 | Сообщение № 18
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

2016
Nic70y,

Спасибо большое,
но к сожалению, эта формула отменяет принцип, того, что делала предыдущая формула, когда разносила данные в разных пропорциях.


Василий
 
Ответить
СообщениеNic70y,

Спасибо большое,
но к сожалению, эта формула отменяет принцип, того, что делала предыдущая формула, когда разносила данные в разных пропорциях.

Автор - magos1986
Дата добавления - 14.06.2024 в 11:26
Nic70y Дата: Среда, 19.06.2024, 10:57 | Сообщение № 19
Группа: Друзья
Ранг: Экселист
Сообщений: 9001
Репутация: 2367 ±
Замечаний: 0% ±

Excel 2010
Код
=ОКРУГЛТ(СУММ($C$1:C$1)*$A2;$B2)-СУММ($B2:B2)+$B2
К сообщению приложен файл: 19.xls (67.5 Kb)


ЮMoney 41001841029809
 
Ответить
Сообщение
Код
=ОКРУГЛТ(СУММ($C$1:C$1)*$A2;$B2)-СУММ($B2:B2)+$B2

Автор - Nic70y
Дата добавления - 19.06.2024 в 10:57
magos1986 Дата: Понедельник, 24.06.2024, 09:56 | Сообщение № 20
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

2016
Nic70y,

Спасибо большое, идея хорошая.


Василий
 
Ответить
СообщениеNic70y,

Спасибо большое, идея хорошая.

Автор - magos1986
Дата добавления - 24.06.2024 в 09:56
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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