Страницы: 1
RSS
Номер строки k-го наибольшего
 
Здравствуйте.
С помощью формулы нашёл по порядку для массива из 32 значений (столбца) 1-е наибольшее значение, 2-е наибольшее и т.д. =НАИБОЛЬШИЙ($A1:$A32;B$34)
Но мне нужно знать какое место занимает каждое из этих наибольших k-х значений в этом самом массиве из 32 ячеек (столбце).
Как вытащить значение расположения этих наибольших в массиве. Пробовал через =ПОИСКПОЗ(НАИБОЛЬШИЙ($A1:$A32;B$34);$A1:$A32) , но получилась ерунда какая-то.  
 
Vadim147, возможно вам нужно это:
Код
=РАНГ.РВ(A1;$A$1:$A$32)
 
Цитата
Vadim147 написал:
Пробовал через =ПОИСКПОЗ
Код
=ПОИСКПОЗ(НАИБОЛЬШИЙ(A2:A32;B34);A1:A32;0)
 
Спасибо, но поиск ПОИСКПОЗ не подошёл. Он ищет тупо определённое число перебором сверху вниз, и найдя ближайшее равное значение-ставит номер строки в диапазоне заданном. То есть если будет 5 одинаковых значений, то он всё время будет останавливаться на одной ближайшей равной ячейке и отображать номер её строки. То есть из 32 позиций разных, отобразятся не все, одна и та же позиция будет присвоена разным ячейкам, хотя у каждой из них должна быть своя.
Перечитал похожие темы, задача там немного другая, но нашёл главный вопрос который упустил при составлении задачи, и чтобы не путать пытающихся помочь сейчас на него отвечу.
"...По каким критериям распределять одинаковые места?"
 
И так имеем столбец значений, рядом то что должно быть. ТО есть для одинаковых чисел места распределяются перебором снизу вверх, так же как и в функции наибольшее/наименьшее k-е значение. Там ведь с одного конца перебирают массив и при одинаковых значениях присваивают второму одинаковому значении не такое же K, а K+1. Так и тут, перебором снизу вверх, при повторяющемся значении присваиваем ему следующий по порядку ранг, а не этот же.
5     6
1     2
1     1
2     3
4     5
6     7
4     4
8     8
только хотелось бы чтобы в строчку это было
5       8 4 7 5 3 1 2 6
1
1
2
4
6
4
8
 
может эту подгоните
Код
=РАНГ.РВ(A1;$A$1:$A$32)+СЧЁТЕСЛИ(A$1:A1;A1)-1
 
Цитата
Vadim147 написал:
поиск ПОИСКПОЗ не подошёл
Код
первая строка

=ПОИСКПОЗ(L1;$A$1:$A$8;0)

последующие строки

=ЕСЛИ(СЧЁТЕСЛИ($A$1:$A$8;L2)>1;P1+ПОИСКПОЗ(L2;ИНДЕКС($A$1:$A$8;P1+1;1):$A$8;0);ПОИСКПОЗ(L2;$A$1:$A$8;0))
Изменено: z_sir - 25.08.2017 15:23:36
Страницы: 1
Читают тему
Наверх