Страницы: 1
RSS
Отбросить" от массива значений 10% сверху и 10% снизу
 
Добрый день друзья. Первый день на форуме так что сильно не пинайте.
Можно ли каким то образом решить следующую задачу, не прибегая к макросам:
Имеется массив (столбец) данных, допустим 1,2,3,4 ..., 100
в отдельной ячейке задаем значение в процентах, например 10%.
Как найти значение массива которое будет удовлетворять следующим условиям: 10% элементов массива, больше искомого значения.
В нашем примере это значение = 90. т.к. больше него находится 10% от всех элементов массива а именно (91,92, ... 100)
Надеюсь объяснил достаточно понятно.
Заранее спасибо.
 
А пример то будет?
Вполне такой нормальный кинжальчик. Процентов на 100
 
Я дико извиняюсь, но на том ноутбуке, с которого я пишу не установлен офис (но зато есть выход в интернет:)).
Если это крайне необходимо то постараюсь залить пример позже. Но он настолько простой что вроде бы легко можно его сделать и без примера.
 
Чистая математика:
1) Сортируем массив по убыванию
2) Считаем кол-во элементов (у Вас 100)
3) Считаем кол-во элементов, входящих в меньшую область х = Кол_во значений * (1-введенный процент) Округляем до целого (У Вас 100* (1-0,1) =90)
4) Теперь кол-во элементов,  входящих в большую область y = Кол_во значений - x
5) Берем все значения сверху с Макс кол-ва и до y (берём числовой топ чисел)

Всё реализуемо формулами

Мой вариант можно оптимизировать, это всего лишь первое, что пришло на ум
Изменено: ProFessor - 12.04.2018 12:50:08
Вся проблема сложных программ, целых томов кодов и состоит в несоблюдении принципа лезвия Оккама: «Не следует множить сущее без необходимости». Вся гениальность в простоте.
 
допустим у Вас массив 1, 2, 3 .. 15 из 15 значений
для тех же 10% какой ответ?
14? (так больше его всего 1 значение, это 6.666% от всех, а не 10)
13? (больше этого 2 значения, а это уже 13.333%, а не 10)

Ваш вариант?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
да, либо 14 либо 13, смотря до куда округлять. В моем случае это ен принципиально, так как имеется массив с более чем несколько десятков тысяч значений. Мне просто надо "отбросить" от него 10% сверху и 10% снизу. Для этого надо знать от какого значения начать "отбрасывать", а стало быть найти эти значения.

Цитата
ProFessor: Всё реализуемо формулами
Вы начали писать про сортировку, а потом сказали что все реализуемо формулами. Есть некая формула, которая осуществляет сортировку?
Мне надо проделать эту манипуляцию примерно с 50 различными условиями для массива. Если бы массив был один и условие одно, то я бы вручную нашел эти 10% и не парился. Но так как таких условий много, и каждый раз эти 10% будут иметь разные значения, хочется все сделать формулами.
Изменено: Antijoke2 - 12.04.2018 12:43:55
 
=НАИМЕНЬШИЙ(ЕСЛИ($A$1:$A$100>НАИМЕНЬШИЙ($A$1:$A$100;СЧЁТ($A$1:$A$100)*$B$1);ЕСЛИ($A$1:$A$100<НАИБОЛЬШИЙ($A$1:$A$100;СЧЁТ($A$1:$A$100)*$B$1);$A$1:$A$100));СТРОКА(A1))
Формула массива, вводится тремя клавишами. Обрезает массив снизу и сверху на указанный в В1 процент и сортирует значения.
Для устранения ошибок в конце диапазона формулу можно завернуть в функцию ЕСЛИОШИБКА
СЧЁТ($A$1:$A$100)*$B$1 можно вывести в отдельную ячейку. Результат можно использовать или массивом для дальнейших вычислений, или вывести на лист.
 
тему можно назвать:
определить такой элемент массива больше которого заданный процент значений этого массива

Виктор, а не смущает что у ТС ноутбук без офиса и предложенная формула Excel мало чем ему поможет без самого Excel
и с этим вопросом автор мог бы обращаться куда-то на математический форум

решение Excel
=НАИБОЛЬШИЙ(данные;П*СЧЕТ(данные)+1)
где
- данные - ссылка на диапазон с данными (на массив данных)
- П - ссылка на ячейку с указанным процентом или само значение процентов

математика:
посортировать массив по убыванию, посчитать К = Процент*Количество_Элементов_в_Массиве-1, взять К-й элемент из массива

и все это работает если процент от количества элементов массива это целое число и в массиве нет повторяющихся значений
например если в массиве 15 элементов, а нужно взять элемент больше которого 10% значений, то К = 10%*15 = 1.5
теперь нужно решить К=1.5 принять равным 1 или 2 и соотв. взять 2 или 3 элемент предварительно отсортированного массива, потому что как взять 2.5-й элемент я не знаю
Изменено: Ігор Гончаренко - 12.04.2018 13:20:40
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко написал: не смущает что у ТС ноутбук без офиса
Цитата
Antijoke2 написал: на том ноутбуке, с которого я пишу не установлен офис
Пусть это автора смущает )
 
У меня рядом два компьютера один с офисом другой с интернетом. Сейчас попробую разобраться с примером Виктора. Спасибо!
 
...третий с монитором, четвертый с клавиатурой... Мышь дома осталась :)
 
Цитата
...третий с монитором, четвертый с клавиатурой... Мышь дома осталась
Просто один рабочий (с него по понятным причинам выход в интернет ограничен), второй личный.
 
А можете, если не сложно, подсказать, как задать массив с условиями.
Т.е. отобрать в массив только те элементы колонки A, которые соответствуют определенным значениям колонок B и C?
 
Это, похоже, другой вопрос для другой темы (которую сами правильно назовете). И уже с примером.
Здесь только хирургическая операция обрезания.

Off
Суд, определение наказания.
- А давайте ужу хвост отрежем?
- Вот-вот! И по самую голову!
 
см.вложение
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко написал: см.вложение
Как?
Цитата
Antijoke2 написал: два компьютера один с офисом другой с интернетом.
По вопросам из тем форума, личку не читаю.
 
:)
Так написано же:
Цитата
см.вложение
Думать надо, где смотреть!
Цитата
третий с монитором!
 
Всем спасибо! Действительно формула НАИБОЛЬШИЙ НАИМЕНЬШИЙ подходит для решения данной задачи.
Осталось понять как правильно определить массив. но это уже как говорят, другая история.
Страницы: 1
Наверх