Страницы: 1 2 След.
RSS
Ранжирование
 
Доброго времени суток!  
Есть список с цифрами. Как сделать, чтобы в соседней строке (столбце) был рейтинг по возрастанию или убыванию?  
Например - 5 7 3 6 5 хочу рядом получить 2 5 1 3 2.  
Спасибо.
 
Если я правильно понял, и надо просто отсортировать исходный диапозон по убыванию или возрастанию, а результат поместить в другое место, то можешь использовать эту процедурку, доработав под свои нужды  
Sub sortirovka()  
Application.ScreenUpdating = False  
Range("A2:A5").Copy  
Range("B2:B5").PasteSpecial Paste:=xlPasteValues, _ Operation:=xlNone, SkipBlanks:=False, Transpose:=False  
Range("B2:B5").Sort Key1:=Range("B2")  
Range("B2").Select  
Application.ScreenUpdating = True  
End Sub
 
{quote}{login=Алексей Ульянов}{date=18.10.2007 08:50}{thema=Ранжирование}{post}Например - 5 7 3 6 5 хочу рядом получить 2 5 1 3 2.  
{/post}{/quote}  
Для этого в Excel есть специально обученная функция - RANK.  
Например, если ваши числа находятся в столбце A в ячейках A1:A5, то в ячейку B1 надо вбить формулу: "=RANK(A1;$A$1:$A$5;1)" и растянуть её за уголок на остальные ячейки в колонке B. Должно получиться 2 5 1 4 2.  
Последний аргумент у функции RANK отвечает как раз за порядок ранжирования - по возрастанию или убыванию.
 
...или =РАНГ("нужная ячейка";"диапазон ячеек";"1" или "0"), последние цифры указывают, по какому критерию хотите сделать ранжирование - по убыванию или возрастанию.
 
А если массив прерывается?  
Т.е. если в необходимо пропустить одну/несколько строк в массиве? Задание чисел через ; не помогает
 
=ЕСЛИ(ЕОШИБКА(РАНГ(A1;$A$1:$A$14;1));"";РАНГ(A1;$A$1:$A$14;1))  
С уважением, Александр.
 
нет, имеется ввиду, если там есть число, но его необходимо не использовать.    
Т.е. например, это может быть некоторая сумма, среднее или ещё что-либо.
 
А можно узнать как они (некоторая сумма, среднее или ещё что-либо) туда попадают? Зачем они там.    
Каждому значению свое место. Excel большой.  
Если для теста, тогда понятно.    
С уважением, Александр.
 
Ну если только так :-)
 
А как эту функцию "запихнуть" в сводную таблицу? У меня есть столбец с Контрагентами и столбец с суммами поставок и мне нужно добавить столбец с рейтингом (по принципу: 1, 2 ... место по убыванию суммы).
 
{quote}{login=Sh_Alex}{date=22.01.2008 09:18}{thema=Ранжирование}{post}=ЕСЛИ(ЕОШИБКА(РАНГ(A1;$A$1:$A$14;1));"";РАНГ(A1;$A$1:$A$14;1)){/post}{/quote}  
Спасибо! Воспользовался с радостью подсказкой.  
А как быть, если в диапазоне колонки для ранжирования 30 ячеек, а заполнены первые 25? Т.е. в "хвостике" последние 5 ячеек не заполнены. Как их исключить из ранжирования? Не менять же каждый раз диапазон...
 
Наверное, радость была затмевающей и нормально воспользоваться подсказкой не получилось :)
 
По-моему излишняя проверка, можно проще:  
=ЕСЛИ(A1="";"";РАНГ(A1;$A$1:$A$20;1))
 
Точно, скопировал формулу, не раздумывая.
 
Функция РАНГ делает так -  
ранг    3 1 5 2 3  
массив  5 7 3 6 5  
 
а как сделать так -    
 
ранг    3 1 4 2 3  
массив  5 7 3 6 5  
?
 
так?
 
огромное спасибо! очень помогло
 
{quote}{login=Маша}{date=06.08.2008 04:38}{thema=}{post}А как эту функцию "запихнуть" в сводную таблицу? У меня есть столбец с Контрагентами и столбец с суммами поставок и мне нужно добавить столбец с рейтингом (по принципу: 1, 2 ... место по убыванию суммы).{/post}{/quote}  У меня тоже аналогичный вопрос. Очень нужно запихнуть в сводную таблицу рейтинг причем так, чтобы при изменении полей таблицы он корректно считался. Может кто-то знает как это сделать?
 
Покажите пример вашей сводной, а там поумаем
 
Уважаемый MCH, я использовала вашу формулу, но она у меня почему-то не работает. Несколько часов крутила, но ничего не вышло :( Не могли бы вы посмотреть мой файл? Заранее благодарна.
 
1. Заменил на формулу массива, вводится нажатием ctrl+shift+enter  
2. т.к. числа дробные, применил ОКРУГЛ(…;2) для попадания в Ваш результат  
3. удалил содержание из ячеек C12 и C29, т.к. там была строка нулевой длины (""), которая не давала считать
 
Огромное спасибо!!! Все работает!!! Вы  мне очень помогли!
 
Подскажите, как можно проранжировать следующий массив:  
массив  4  5  5  3  2  1  3  1  1  1  0    
ранг   10 11 11  9  8  7  9  7  7  7  6
 
Ирина, поясните логику: 11 значений подразумевает распределение по 11 местам, а у вас - только по 6?.. В XL-2010 есть варианты (вертикально мне удобнее):  
- =РАНГ(B7;$B$7:$B$17;1); - =РАНГ.СР(B7;$B$7:$B$17;0); - =РАНГ.РВ(B7;$B$7:$B$17;1)... ;) -30452-
 
Спасибо. Я в EL-2010 эти формулы нашла. Но. Дело в том, что мои 11 значений вполне могут измениться на значения без повторов, тогда и ранг у каждого значения будет индивидуальный от 1 до 11, но на данный момент у меня есть повторяющиеся значения и я в своей задаче хотела использовать только максимальные значения ранга (по количеству уникальных значений массива), что-то типа нумерации только по убыванию и с учётом повторяющихся значений.  
P.S. сама еле понимаю, что написала :)
 
Поскольку нормальные герои всегда идут в обход, то, как вариант схемы... Уникальные выбирайте как вам удобнее... ;) -70677-
 
А просто ранг без повторов?  
 
=РАНГ(B2;$B$2:$B$12;1)+СЧЁТЕСЛИ($B$2:B2;B2)-1  
 
Для примере Z (автору лень...).
 
Но, всё равно хотелось бы видеть вот такой результат, а через РАНГ+СЧЁТЕСЛИ этого всё рано не выходит (массив после обновлений исходных данных может меняться и ранг может добираться и до 3 и даже до 1):  
 
массив Ранг  
4       10  
5       11  
5       11  
3       9  
2       8  
1       7  
3       9  
1       7  
1       7  
1       7  
0       6
 
А формула МСН годичной давности не годится (post_227327.xls)?
 
Да! Работает! Спасибо большое! :):):)
Страницы: 1 2 След.
Читают тему
Наверх