Страницы: 1
RSS
Расставь нас по местам!
 
Вроде-бы несложная задача, но никак не могу сообразить.  
Имеется таблица результатов, нужно присвоить соответствующее результату место. Если имеется два или более одинаковых результата, они занимают соответствующее им одинаковое место, следующее за ними место занимает следующий результат, и т.д. То есть если есть два одинаковых результата, общее количество мест уменьшается на одно (как в спорте).  
Нужна несложная формула для решения этой задачи, для произвольного количества результатов.
 
По форуму не бегали? Не Вы первый с этим.  
Поиск по "ранг", "ранжирование"...
 
без РАНГ
 
Вот такая формула массива:  
 
=ПОИСКПОЗ(1=1;A22=НАИБОЛЬШИЙ((ПОИСКПОЗ($A$22:$A$26;$A$22:$A$26;0)=СТРОКА(ДВССЫЛ("1:"&СЧЁТ($A$22:$A$26))))*$A$22:$A$26;СТРОКА(ДВССЫЛ("1:"&СЧЁТ($A$22:$A$26))));0)
Редко но метко ...
 
Так принимается?
 
Брависсимо! Я первый раз на форуме и сразу столько новых идей (для меня). Спасибо ВСЕМ!
 
Уважаемые форумчане!  
Так и не смог ничего придумать, поэтому обращаюсь к Вам вновь.  
Формула =ПОИСКПОЗ(1=1;A22=НАИБОЛЬШИЙ((ПОИСКПОЗ($A$22:$A$26;$A$22:$A$26;0)=СТРОКА(ДВССЫЛ("1:"&СЧЁТ($A$22:$A$26))))*$A$22:$A$26;СТРОКА(ДВССЫЛ("1:"&СЧЁТ($A$22:$A$26))));0) конечно хороша, но неправильно работает, если есть отрицальное количество баллов.  
Нужна универсальная формула, для несортированного диапазона, для любых значений баллов, без дополнительных столбцов и ячеек.  
И ещё (что для меня даже важнее) - нужна формула для обратного подсчета по тому же принципу, т.е. первое место занимает наименьшее количество баллов.    
Пример прилагается.
 
наибольшему - первое  
=СУММ(1*(ЕСЛИ(ПОИСКПОЗ($A$3:$A$9;$A$3:$A$9;0)=(СТРОКА($A$3:$A$9)-2);$A$3:$A$9;МИН($A$3:$A$9)-1)>=A3))  
 
ПОИСКПОЗ($A$3:$A$9;$A$3:$A$9;0)=(СТРОКА($A$3:$A$9)-2)  
возвращает ложь, если элемент уже встречался выше  
 
через если: первому встреченному - сам элемент, всем таким же нижеследующим (неуникальным) - меньше наименьшего в массиве  
 
место это просто количество элементов больше или равных данному в полученном массиве  
 
наименьшему - первое, точно так же но по обратному  
=СУММ(1*(ЕСЛИ(ПОИСКПОЗ($A$3:$A$9;$A$3:$A$9;0)=(СТРОКА($A$3:$A$9)-2);$A$3:$A$9;МАКС($A$3:$A$9)+1)<=A3))
 
.
 
{quote}{login=}{date=23.03.2011 08:30}{thema=}{post}.{/post}{/quote}  
 
из к/ф "не бойся, я с тобой"  
 
(про золотой зуб)  
-Ты думаешь это твой зуб? Нет! Это даже не мой зуб, это ИХ ЗУБ!
 
Да, оказывается люди здесь не только отзывчивые, но и скромные.  
А ведь я был согласен с Сергеем Матвеенко, который спел  
"Чем больше знаю я людей,  
Тем больше я люблю животных!"  
Иногда мир меняется в лучшую сторону.  
СПАСИБО!
 
dl, аноним выложил рабочую версию формулы. Ваша сырая. Не разбирался, но при отсутствии нуля в исходном диапазоне сбоит (ошибка Н/Д).
 
{quote}{login=vikttur}{date=23.03.2011 09:17}{thema=}{post}dl, аноним выложил рабочую версию формулы. Ваша сырая. Не разбирался, но при отсутствии нуля в исходном диапазоне сбоит (ошибка Н/Д).{/post}{/quote}  
 
у меня в формуле диапазон другой $A$3:$A$9 (из-за самопроверки)  
чтоб не было н/д надо заполнить пустые строки 8 и 9
 
Сергей, прошу прощения, спешил. Формула анонима действительно повторяет предыдущую формулу. Позже разобрался: Н/Д вызывалось сравнением  
""=число (из-за пустого диапазона).
 
Еще варианты(формулы массива):  
по возрастанию:  
=СУММ(--(ЧАСТОТА(ЕСЛИ($A$3:$A$7<=A3;$A$3:$A$7);$A$3:$A$7)>0))  
по убыванию:  
=СУММ(--(ЧАСТОТА(ЕСЛИ($A$3:$A$7>=A3;$A$3:$A$7);$A$3:$A$7)>0))
Страницы: 1
Наверх