Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2014, 17:48   #1
andruha912009
 
Регистрация: 05.06.2014
Сообщений: 5
Сообщение Процент от общего количества

Здравствуйте! Помогите пожалуйста составить формулу.
Имеется отсортированый по убыванию любой список чисел. К примеру
100
90
80
70
60
50
40
30

нужно отметить буквой А те значения (все идет сверху вниз), которые дают 50 % от общего количества
В - 40%
С - остальные.
Спасибо!
andruha912009 вне форума Ответить с цитированием
Старый 05.06.2014, 20:25   #2
Kefirrr
Пользователь
 
Регистрация: 05.06.2010
Сообщений: 53
По умолчанию

а макросом подойдет?
Только сразу оговорюсь, что можно все намного проще и красивее, но я только в самом начале познания VBA
А так, вроде все работает (только я взяла 15% и 10%)
Вложения
Тип файла: zip 322.zip (20.4 Кб, 10 просмотров)
Kefirrr вне форума Ответить с цитированием
Старый 05.06.2014, 21:24   #3
andruha912009
 
Регистрация: 05.06.2014
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Kefirrr Посмотреть сообщение
а макросом подойдет?
Только сразу оговорюсь, что можно все намного проще и красивее, но я только в самом начале познания VBA
А так, вроде все работает (только я взяла 15% и 10%)
спасибо большое конечно, но мне желательно все в одной формуле..
у вас нет никаких идей на счет этого?
спасибо вам большое
andruha912009 вне форума Ответить с цитированием
Старый 05.06.2014, 22:46   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

А вы покажите на примере, что должно получиться

возьмём числа
4
3
2
1

какие напротив них должны буквы стоять?
например, 4+1 дают ровно 50% - их отмечаем буквой А?
или отмечаем 3 и 2?

а, может, буква А будет только у верхних, начиная с 4, пока не наберется 50%?
но что делать в данном случае?
4 мы отметим буквой А, а вот отмечать ли тройку? (ведь с ней, 4+3, это будет уже больше 50%)


формулу написать недолго, - лень угадывать, и потом переделывать, если не угадал что вам надо
EducatedFool вне форума Ответить с цитированием
Старый 05.06.2014, 22:51   #5
andruha912009
 
Регистрация: 05.06.2014
Сообщений: 5
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
А вы покажите на примере, что должно получиться

возьмём числа
4
3
2
1

какие напротив них должны буквы стоять?
например, 4+1 дают ровно 50% - их отмечаем буквой А?
или отмечаем 3 и 2?

а, может, буква А будет только у верхних, начиная с 4, пока не наберется 50%?
но что делать в данном случае?
4 мы отметим буквой А, а вот отмечать ли тройку? (ведь с ней, 4+3, это будет уже больше 50%)


формулу написать недолго, - лень угадывать, и потом переделывать, если не угадал что вам надо

данный пример для расчета процентов не совсем есть наглядным, так как очень мало значений

пишу вам свой пример:

100
90
80
70
60
50
40
30

в списке сумма значений 520.

50 процентов от общей суммы - 260. то есть СВЕРХУ возьмем 100 и 90 (еще 80 уже не влезет, так как будет выше 260)
и ставим напротив них А
Потом берем следующие по счету (уже кроме 100 и 90) - 40 процентов от 520 - 208. Смотрим - это 80 и 70(без 60, так как в сумме будет больше 208.) - ставим напротив них B
Напротив всех остальных - С
andruha912009 вне форума Ответить с цитированием
Старый 05.06.2014, 23:24   #6
Kefirrr
Пользователь
 
Регистрация: 05.06.2010
Сообщений: 53
По умолчанию

хм, теперь я чего-то не понимаю. напротив 100 и 90 ставим А (сумма 190, меньше 260 и меньше 208- что является 40 %)
напротив 80 и 70 ставим В (сумма =150)
почему тогда напротив всех остальных C ведь их сумма >150 (60+50+40+30)
или можно использовать только 1 А и 1 В ?
Kefirrr вне форума Ответить с цитированием
Старый 05.06.2014, 23:31   #7
andruha912009
 
Регистрация: 05.06.2014
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Kefirrr Посмотреть сообщение
хм, теперь я чего-то не понимаю. напротив 100 и 90 ставим А (сумма 190, меньше 260 и меньше 208- что является 40 %)
напротив 80 и 70 ставим В (сумма =150)
почему тогда напротив всех остальных C ведь их сумма >150 (60+50+40+30)
или можно использовать только 1 А и 1 В ?

вся загвоздка в этой задачи состоит в том, что проходим мы данные сверху вниз сортированного списка. (сначала сверху откусываем 50 процентов, затем 40 из того что ОСТАЛОСЬ, но тоже в порядке убывания сверху вниз) мы не анализируем вообщем его как целое сразу.

берем первое значение сверху - 100, смотрим, входит в интервал 260 (50 %)- ставим А
проверяем войдет ли следующее,то есть 100+90=190. подходит.- ставим А
проверяем войдет ли следующее,то есть 190+80=270. - и с этого момента проверяем уже на 40 процентов с нуля, но уже без первых двух, которые вошли в А
andruha912009 вне форума Ответить с цитированием
Старый 05.06.2014, 23:42   #8
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
но уже без первых двух, которые вошли в А
если бы без этого (считать 90% с начала списка), - то всё было бы просто:

Код:
  Ячейка: B1      Формула  (стиль A1):   =ЕСЛИ(СУММ(A$1:A1)/СУММ(A:A)<=0,5;"A";ЕСЛИ(СУММ(A$1:A1)/СУММ(A:A)<=0,9;"B";"C"))
                  Формула  (стиль R1C1): =ЕСЛИ(СУММ(R1C[-1]:RC[-1])/СУММ(C[-1])<=0,5;"A";ЕСЛИ(СУММ(R1C[-1]:RC[-1])/СУММ(C[-1])<=0,9;"B";"C"))
А в вашем случае, формула будет намного сложнее (формула массива), мне такую не написать
Ждём специалистов-формулистов
EducatedFool вне форума Ответить с цитированием
Старый 05.06.2014, 23:51   #9
andruha912009
 
Регистрация: 05.06.2014
Сообщений: 5
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
если бы без этого (считать 90% с начала списка), - то всё было бы просто:

Код:
  Ячейка: B1      Формула  (стиль A1):   =ЕСЛИ(СУММ(A$1:A1)/СУММ(A:A)<=0,5;"A";ЕСЛИ(СУММ(A$1:A1)/СУММ(A:A)<=0,9;"B";"C"))
                  Формула  (стиль R1C1): =ЕСЛИ(СУММ(R1C[-1]:RC[-1])/СУММ(C[-1])<=0,5;"A";ЕСЛИ(СУММ(R1C[-1]:RC[-1])/СУММ(C[-1])<=0,9;"B";"C"))
А в вашем случае, формула будет намного сложнее (формула массива), мне такую не написать
Ждём специалистов-формулистов
та чего, работает все отлично..
кстати за пару минут до того как вы написали родилась точно такая же идея с накоплением и накоплением процентов.
спасибо большое))))
andruha912009 вне форума Ответить с цитированием
Старый 06.06.2014, 01:58   #10
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

все оказалось не так просто(((
посмотрите сколько букв В проставит формула... правильно - 4, а надо бы только 2 (согласно пояснений, потому что с математическим понятием "влезет" в интервал или нет - не поспоришь)
Вложения
Тип файла: rar Проценты.rar (6.0 Кб, 9 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
составить программу для нахождения наибольшего общего и наименьшего общего кратного двух натуральных чисел НОК(A,B)=A*B/НОД(A,B) sisaw Помощь студентам 0 06.05.2014 20:36
Как добавить счет всего общего количества? Predator199 PHP 2 29.02.2012 20:12
Нахождение наибольшего общего делителяНахождение наибольшего общего делителя A_Orlov Паскаль, Turbo Pascal, PascalABC.NET 1 27.04.2010 16:53
Подсчет общего количества студентов NikolayGVB Microsoft Office Excel 4 19.01.2009 19:10
нахождение наибольшего общего делителя и наименьшего общего кратного made in russia Помощь студентам 2 21.12.2008 23:36