Функция Excel RANK и другие способы вычисления ранга

  • Поделись Этим
Michael Brown

Оглавление

В учебнике объясняются особенности функций Excel Rank и показано, как выполнять ранжирование в Excel на основе нескольких критериев, ранжировать данные по группам, вычислять процентильный ранг и многое другое.

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

    Функция Excel RANK

    Функция RANK в Excel возвращает порядок (или ранг) числового значения по сравнению с другими значениями в том же списке. Другими словами, она сообщает вам, какое значение является самым высоким, вторым по величине и т.д.

    В отсортированном списке ранг определенного числа - это его положение. Функция RANK в Excel может определить ранг, начиная с самого большого значения (как при сортировке по убыванию) или с самого маленького (как при сортировке по возрастанию).

    Синтаксис функции Excel RANK следующий:

    RANK(number,ref,[order])

    Где:

    Номер (требуется) - значение, ранг которого вы хотите найти.

    Ссылка (требуется) - список числовых значений для ранжирования. Он может быть представлен в виде массива чисел или ссылки на список чисел.

    Заказ (необязательно) - число, определяющее, как ранжировать значения:

    • Если 0 или опущено, значения ранжируются в порядке убывания, т.е. от наибольшего к наименьшему.
    • Если 1 или любое другое ненулевое значение, то значения ранжируются в порядке возрастания, т.е. от наименьшего к наибольшему.

    Функция Excel RANK.EQ

    RANK.EQ - это улучшенная версия функции RANK, появившаяся в Excel 2010. Она имеет тот же синтаксис, что и RANK, и работает по той же логике: если несколько значений ранжированы одинаково, то наивысший ранг присваивается всем таким значениям. (EQ означает "равный").

    RANK.EQ(number,ref,[order])

    В Excel 2007 и более поздних версиях всегда следует использовать функцию RANK. В Excel 2010, Excel 2013 и Excel 2016 можно использовать либо RANK, либо RANK.EQ. Однако разумнее использовать RANK.EQ, поскольку RANK может быть прекращена в любой момент.

    Функция Excel RANK.AVG

    RANK.AVG - это еще одна функция для поиска ранга в Excel, которая доступна только в Excel 2010, Excel 2013, Excel 2016 и более поздних версиях.

    Она имеет тот же синтаксис, что и две другие функции:

    RANK.AVG(number,ref,[order])

    Разница заключается в том, что если более одного числа имеют одинаковый ранг, то средний ранг возвращается (AVG означает "среднее").

    4 вещи, которые вы должны знать о RANK в Excel

    1. Любая ранговая формула в Excel работает только с числовыми значениями: положительными и отрицательными числами, нулями, значениями даты и времени. Нечисловые значения в ссылка аргумент игнорируется.
    2. Все функции RANK возвращают один и тот же ранг для дублирующихся значений и пропускают последующее ранжирование, как показано в примере ниже.
    3. В Excel 2010 и более поздних версиях функция RANK была заменена на RANK.EQ и RANK.AVG. Для обеспечения обратной совместимости функция RANK по-прежнему работает во всех версиях Excel, но в будущем она может быть недоступна.
    4. Если номер не находится в пределах ссылка , любая функция Excel Rank вернет ошибку #N/A.

    Базовая формула ранжирования Excel (от наибольшего к наименьшему)

    Чтобы лучше понять, как ранжировать данные в Excel, посмотрите на этот снимок экрана:

    Все три формулы ранжируют числа в столбце B по порядку порядок убывания (the заказать аргументы опущены):

    Во всех версиях Excel 2003 - 2016 гг:

    =RANK($B2,$B$2:$B$7)

    В Excel 2010 - 2016 гг:

    =RANK.EQ($B2,$B$2:$B$7)

    =RANK.AVG($B2,$B$2:$B$7)

    Разница заключается в том, как эти формулы обрабатывают дублирующиеся значения. Как вы видите, один и тот же результат появляется дважды, в ячейках B5 и B6, что влияет на последующее ранжирование:

    • Формулы RANK и RANK.EQ присваивают обоим дублирующим оценкам ранг 2. Следующая по значению оценка (Даниэла) занимает 4 место. Ранг 3 не присваивается никому.
    • Формула RANK.AVG присваивает каждому дубликату за кадром свой ранг (2 и 3 в данном примере) и возвращает среднее значение этих рангов (2,5). Опять же, 3-й ранг никому не присваивается.

    Как использовать RANK в Excel - примеры формул

    Как говорится, путь к совершенству вымощен практикой. Итак, чтобы лучше научиться использовать функцию RANK в Excel, отдельно или в сочетании с другими функциями, давайте разберемся с решением нескольких реальных задач.

    Как ранжировать в Excel от наименьшего к наибольшему

    Как показано в примере выше, чтобы ранжировать числа от наибольшего к наименьшему, вы используете одну из формул Excel Rank с параметром заказать аргумент установлен в 0 или опущен (по умолчанию).

    иметь номер в сравнении с другими числами, отсортированными в порядок возрастания , поместите 1 или любое другое ненулевое значение в необязательный третий аргумент.

    Например, для ранжирования результатов студентов в спринте на 100 метров можно использовать одну из приведенных ниже формул:

    =RANK(B2,$B$2:$B$7,1)

    =RANK.EQ(B2,$B$2:$B$7,1)

    Пожалуйста, обратите внимание, что мы блокируем диапазон в ссылка аргумент с помощью абсолютных ссылок на ячейки, чтобы он не изменился, когда мы скопируем формулу вниз по столбцу.

    В результате наименьшее значение (самое быстрое время) занимает 1 место, а наибольшее значение (самое медленное время) получает самый низкий ранг - 6. Равные времена (B2 и B7) получают одинаковые ранги.

    Как уникально ранжировать данные в Excel

    Как уже отмечалось ранее, все функции Excel Rank возвращают одинаковый ранг для предметов с одинаковой стоимостью. Если это вам не нужно, используйте одну из следующих формул для разрешения ситуаций с равными значениями и присваивайте ранг уникальное звание к каждому номеру.

    Уникальный рейтинг от высшего к низшему

    Чтобы расположить оценки по математике наших студентов в порядке убывания, используйте эту формулу:

    =RANK.EQ(B2,$B$2:$B$7)+COUNTIF($B$2:B2,B2)-1

    Уникальное ранжирование от наименьшего к наибольшему

    Чтобы расположить результаты забега на 100 метров в порядке возрастания без дубликатов, используйте следующую формулу:

    =RANK.EQ(B2,$B$2:$B$7,1) + COUNTIF($B$2:B2,B2)-1

    Как работают эти формулы

    Как вы могли заметить, единственное различие между двумя формулами заключается в том, что заказать аргумент функции RANK.EQ: опущен для ранжирования значений по убыванию, 1 - по возрастанию.

    В обеих формулах это функция COUNTIF с умным использованием относительных и абсолютных ссылок на ячейки. Короче говоря, вы используете COUNTIF, чтобы узнать, сколько вхождений ранжируемого числа есть в вышеуказанных ячейках, включая ячейку числа. В самой верхней строке, где вы вводите формулу, диапазон состоит из одной ячейки ($B$2:B2). Но поскольку вы блокируете только ячейкупервая ссылка ($B$2), последняя относительная ссылка (B2) изменяется в зависимости от строки, в которую копируется формула. Таким образом, для строки 7 диапазон расширяется до $B$2:B7, и значение в B7 сравнивается с каждой из вышеуказанных ячеек.

    Следовательно, для всех 1-ых вхождений COUNTIF возвращает 1; и вы вычитаете 1 в конце формулы, чтобы восстановить исходный ранг.

    Для двух вхождений COUNTIF возвращает 2. Вычитая 1, вы увеличиваете ранг на 1 пункт, предотвращая таким образом дублирование. Если есть три вхождения одного и того же значения, COUNTIF()-1 добавит 2 к их рейтингу, и так далее.

    Альтернативное решение для разрыва связей Excel RANK

    Другой способ уникального ранжирования чисел в Excel - это сложение двух функций COUNTIF:

    • Первая функция определяет, сколько значений больше или меньше ранжируемого числа, в зависимости от того, ранжируете ли вы по убыванию или по возрастанию, соответственно.
    • Вторая функция (с "расширяющимся диапазоном" $B$2:B2, как в примере выше) получает количество значений, равное числу.

    Например, чтобы расположить числа по порядку от наибольшего к наименьшему, можно воспользоваться следующей формулой:

    =COUNTIF($B$2:$B$7,">"&$B2)+COUNTIF($B$2:B2,B2)

    Как показано на скриншоте ниже, тай-брейк успешно решен, и каждому студенту присвоен уникальный ранг:

    Ранжирование в Excel на основе нескольких критериев

    Предыдущий пример продемонстрировал два рабочих решения для ситуации с ничьей в Excel RANK. Однако может показаться несправедливым, что одинаковые числа ранжируются по-разному, основываясь только на их положении в списке. Чтобы улучшить ранжирование, вы можете добавить еще один критерий, который будет учитываться в случае ничьей.

    В нашем примере набора данных давайте сложим общие баллы в столбце C и рассчитаем ранг следующим образом:

    • Во-первых, займите место с Оценка по математике (основные критерии)
    • Если есть ничья, разбейте ее с помощью Общий балл (вторичные критерии)

    Для этого мы будем использовать обычную формулу RANK/RANK.EQ, чтобы найти ранг, и функцию COUNTIFS, чтобы сломать ничью:

    =RANK.EQ($B2,$B$2:$B$7)+COUNTIFS($B$2:$B$7,$B2,$C$2:$C$7,">"&$C2)

    По сравнению с примером выше, эта формула ранжирования более объективна: Тимофей занимает 2-е место, потому что его общий балл выше, чем у Юлии:

    Как работает эта формула

    Часть формулы RANK очевидна, а функция COUNTIFS делает следующее:

    • Первый диапазон_критериев / критерии пара ($B$2:$B$7,$B2) подсчитывает вхождения значения, которое вы ранжируете. Обратите внимание, что мы фиксируем ассортимент с абсолютными ссылками, но не блокируйте критерии строку ($B2), чтобы формула проверяла значение в каждой строке по отдельности.
    • Второй диапазон_критериев / критерии pair ($C$2:$C$7,">"&$C2) выясняет, сколько суммарных оценок больше, чем суммарная оценка ранжируемого значения.

    Поскольку COUNTIFS работает по логике AND, т.е. учитывает только те ячейки, которые удовлетворяют всем заданным условиям, для Тимофея она возвращает 0, поскольку ни один другой ученик с таким же баллом по математике не имеет более высокого общего балла. Следовательно, ранг Тимофея, возвращаемый RANK.EQ, не меняется. Для Джулии функция COUNTIFS возвращает 1, поскольку один ученик с таким же баллом по математике имеет более высокий общий балл, поэтому ее ранг равенувеличивается на 1. Если еще один студент имеет такой же балл по математике и общий балл ниже, чем у Тимоти и Джулии, его ранг увеличивается на 2, и так далее.

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

    Вместо функции RANK или RANK.EQ можно использовать COUNTIF для проверки основных критериев, а COUNTIFS или SUMPRODUCT для решения проблемы равенства:

    =COUNTIF($B$2:$B$7,">"&$B2)+COUNTIFS($B$2:$B$7,$B2,$C$2:$C$7,">"&$C2)+1

    =COUNTIF($B$2:$B$7,">"&B2)+SUMPRODUCT(--($C$2:$C$7=C2),--($B$2:$B$7>B2))+1

    Результат этих формул точно такой же, как показано выше.

    Как рассчитать перцентильный ранг в Excel

    В статистике перцентиль (или центиль ) - это значение, ниже которого опускается определенный процент значений в данном наборе данных. Например, если 70% студентов равны или ниже вашего тестового балла, ваш перцентильный ранг равен 70.

    Чтобы получить процентильный ранг в Excel, используйте функцию RANK или RANK.EQ с ненулевым значением заказать аргумент для ранжирования чисел от наименьшего к наибольшему, а затем разделите ранг на количество чисел. Таким образом, общий аргумент Формула перцентильного ранга в Excel происходит следующим образом:

    RANK.EQ( самая верхняя_ячейка , ассортимент ,1)/COUNT( ассортимент )

    Чтобы рассчитать процентный рейтинг наших студентов, формула принимает следующий вид:

    =RANK.EQ(B2,$B$2:$B$7,1)/COUNT($B$2:$B$7)

    Чтобы результаты отображались правильно, обязательно установите параметр Процент формат в ячейки с формулами:

    Как ранжировать числа в несмежных ячейках

    В ситуациях, когда вам нужно ранжировать несмежные ячейки, поставьте эти ячейки непосредственно в ссылка аргумент вашей формулы Excel Rank в виде ссылочного союза, фиксируя ссылки знаком $. Например:

    =RANK(B2,($B$2,$B$4,$B$6))

    Чтобы предотвратить ошибки в неранжированных ячейках, оберните RANK в функцию IFERROR, например, так:

    =IFERROR(RANK(B2,($B$2,$B$4,$B$6)), "")

    Обратите внимание, что дублирующему номеру также присваивается ранг, хотя ячейка B5 не включена в формулу:

    Если вам нужно ранжировать несколько несмежных ячеек, приведенная выше формула может стать слишком длинной. В этом случае более элегантным решением будет определение именованного диапазона и ссылка на это имя в формуле:

    =IFERROR(RANK(B2,range), "")

    Как ранжировать в Excel по группам

    При работе с записями, организованными в некую структуру данных, данные могут принадлежать к различным группам, и вам может понадобиться ранжировать числа в каждой группе по отдельности. Функция Excel RANK не может решить эту задачу, поэтому мы будем использовать более сложную формулу SUMPRODUCT:

    Рейтинг по группам в по убывающей порядок:

    =SUMPRODUCT((A2=$A$2:$A$7)*(C2<$C$2:$C$7))+1

    Рейтинг по группам в по возрастанию порядок:

    =SUMPRODUCT((A2=$A$2:$A$7)*(C2>$C$2:$C$7))+1

    Где:

    • A2:A7 - это группы, присвоенные номерам.
    • C2:C7 - это числа, которые необходимо ранжировать.

    В этом примере мы используем первую формулу для ранжирования чисел в каждой группе от наибольшего к наименьшему:

    Как работает эта формула

    По сути, формула оценивает 2 условия:

    • Сначала проверяется группа (A2=$A$2:$A$7). Эта часть возвращает массив TRUE и FALSE в зависимости от того, принадлежит ли элемент диапазона к той же группе, что и A2.
    • Во-вторых, вы проверяете результат. Чтобы проранжировать значения от наибольшего к наименьшему ( порядок убывания ), используйте условие (C2<$C$2:$C$11), которое возвращает TRUE для ячеек больше или равных C2, FALSE в противном случае.

    Поскольку в терминах Microsoft Excel TRUE = 1 и FALSE = 0, перемножение двух массивов дает массив из 1 и 0, где 1 возвращается только для строк, в которых выполнены оба условия.

    Затем SUMPRODUCT складывает элементы массива 1's и 0's, возвращая 0 для самого большого числа в каждой группе. И вы добавляете 1 к результату, чтобы начать ранжирование с 1.

    Формула, которая упорядочивает числа в группах от наименьшего к наибольшему ( по возрастанию заказать ) работает по той же логике. Разница в том, что SUMPRODUCT возвращает 0 для наименьшего числа в определенной группе, поскольку ни одно число в этой группе не удовлетворяет 2-му условию (C2>$C$2:$C$7). Опять же, вы заменяете нулевой ранг на 1-й, добавляя 1 к результату формулы.

    Вместо SUMPRODUCT можно использовать функцию SUM для суммирования элементов массива. Но для этого необходимо использовать формулу массива, которая выполняется с помощью Ctrl + Shift + Enter. Например:

    =SUM((A2=$A$2:$A$7)*(C2<$C$2:$C$7))+1

    Как отдельно ранжировать положительные и отрицательные числа

    Если ваш список чисел содержит как положительные, так и отрицательные значения, функция Excel RANK проранжирует их все в мгновение ока. Но что если вы хотите, чтобы положительные и отрицательные числа ранжировались отдельно?

    Имея числа в ячейках с A2 по A10, используйте одну из следующих формул, чтобы получить индивидуальный рейтинг для положительных и отрицательных значений:

    Расположите положительные числа по убыванию:

    =IF($A2>0,COUNTIF($A$2:$A$10,">"&A2)+1,"")

    Расположите положительные числа по возрастанию:

    =IF($A2>0,COUNTIF($A$2:$A$10,">0")-COUNTIF($A$2:$A$10,">"&$A2),"")

    Расположите отрицательные числа по убыванию:

    =IF($A2<0,COUNTIF($A$2:$A$10,"<0")-COUNTIF($A$2:$A$10,"<"&$A2),"")

    Расположите отрицательные числа по возрастанию:

    =IF($A2<0,COUNTIF($A$2:$A$10,"<"&$A2)+1,"")

    Результаты будут выглядеть примерно так:

    Как работают эти формулы

    Для начала давайте разберем формулу, по которой положительные числа ранжируются на по убывающей порядок:

    • В логическом тесте функции IF вы проверяете, больше ли число нуля.
    • Если число больше 0, функция COUNTIF возвращает количество значений, превышающих ранжируемое число.

      В этом примере A2 содержит второе по величине положительное число, для которого COUNTIF возвращает 1, что означает, что существует только одно число больше него. Чтобы начать ранжирование с 1, а не с 0, мы добавляем 1 к результату формулы, так что она возвращает ранг 2 для A2.

    • Если число больше 0, формула возвращает пустую строку ("").

    Формула, которая упорядочивает положительные числа в по возрастанию порядок работает немного по-другому:

    Если число больше 0, первый COUNTIF получает общее количество положительных чисел в наборе данных, а второй COUNTIF выясняет, сколько значений больше этого числа. Затем вычитаем последнее из первого и получаем желаемый ранг. В нашем примере есть 5 положительных значений, 1 из которых больше A2. Поэтому вычитаем 1 из 5 и получаем ранг 4 для A2.

    Формулы для ранжирования отрицательных чисел основаны на аналогичной логике.

    Примечание. Все приведенные выше формулы игнорировать нулевые значения потому что 0 не принадлежит ни множеству положительных, ни множеству отрицательных чисел. Чтобы включить нули в ранжирование, замените>0 и =0 и <=0, соответственно, там, где этого требует логика формулы.

    Например, чтобы проранжировать положительные числа и нули от наибольшего к наименьшему, используйте эту формулу: =IF($A2>=0,COUNTIF($A$2:$A$10,">"&A2)+1,"")

    Как ранжировать данные в Excel, игнорируя нулевые значения

    Как вы уже знаете, формула RANK в Excel работает со всеми числами: положительными, отрицательными и нулями. Но в некоторых случаях мы просто хотим ранжировать ячейки с данными, игнорирующими значения 0. В Интернете можно найти несколько возможных решений для этой задачи, но формула Excel RANK IF, как мне кажется, является наиболее универсальной:

    Ранжируйте числа по убыванию, игнорируя нуль:

    =IF($B2=0,"",IF($B2>0,RANK($B2,$B$2:$B$10), RANK($B2,$B$2:$B$10)-COUNTIF($B$2:$B$10,0)))

    Ранжируйте числа по возрастанию, игнорируя ноль:

    =IF($B2=0,"",IF($B2>0,RANK($B2,$B$2:$B$10,1) - COUNTIF($B$2:$B$10,0), RANK($B2,$B$2:$B$10,1)))

    Где B2:B10 - диапазон чисел, которые необходимо ранжировать.

    Самое лучшее в этой формуле то, что она прекрасно работает как для положительных, так и для отрицательных чисел, оставляя нулевые значения вне ранжирования:

    Как работает эта формула

    На первый взгляд, формула может показаться немного запутанной. При ближайшем рассмотрении логика очень проста.

    Вот как формула Excel RANK IF ранжирует числа от наибольшего к наименьшему, игнорируя нули:

    • Первый IF проверяет, равно ли число 0, и если да, то возвращает пустую строку:

      IF($B2=0,"", ...)

    • Если число не равно нулю, второй IF проверяет, больше ли оно 0, и если да, то обычная функция RANK / RANK.EQ вычисляет его ранг:

      IF($B2>0,RANK($B2,$B$2:$B$10),...)

    • Если число меньше 0, то ранжирование корректируется на количество нулей. В данном примере имеется 4 положительных числа и 2 нуля. Таким образом, для самого большого отрицательного числа в B10 формула Excel RANK вернет 7. Но мы пропускаем нули, и поэтому нам нужно скорректировать ранг на 2 пункта. Для этого мы вычитаем количество нулей из ранга:

      RANK($B2,$B$2:$B$10)-COUNTIF($B$2:$B$10,0))

    Да, это так просто! Формула для ранжирования чисел от наименьшего к наибольшему, игнорируя нули, работает похожим образом, и это может быть хорошим упражнением для мозга, чтобы вывести ее логику :)

    Как вычислить ранг в Excel по абсолютному значению

    При работе со списком положительных и отрицательных значений может возникнуть необходимость ранжировать числа по их абсолютным значениям, игнорируя знак.

    Задача может быть решена с помощью одной из приведенных ниже формул, в основе которой лежит функция ABS, возвращающая абсолютное значение числа:

    Ранг ABS по убыванию:

    =SUMPRODUCT((ABS(A2)<=ABS(A$2:A$7)) * (A$2:A$7"")) - SUMPRODUCT((ABS(A2)=ABS($A$2:$A$7)) * (A$2:A$7""))+1

    Ранг ABS по возрастанию:

    =SUMPRODUCT((ABS(A2)>=ABS(A$2:A$7)) * (A$2:A$7"")) - SUMPRODUCT((ABS(A2)=ABS($A$2:$A$7)) * (A$2:A$7""))+1

    В результате отрицательные числа ранжируются так, как если бы они были положительными:

    Как получить N наибольших или наименьших значений

    Если вы хотите получить фактическое число N самых больших или самых маленьких значений, а не их рейтинг, используйте функцию LARGE или SMALL соответственно.

    Например, мы можем получить 3 лучших балла наших студентов с помощью этой формулы:

    =LARGE($B$2:$B$7, $D3)

    Где B2:B7 - список оценок, а D3 - желаемый ранг.

    Кроме того, имена студентов можно получить с помощью формулы INDEX MATCH (при условии, что в топ-3 нет дублирующих оценок):

    =INDEX($A$2:$A$7,MATCH(E3,$B$2:$B$7,0))

    Аналогично, вы можете использовать функцию SMALL, чтобы извлечь 3 нижних значения:

    =SMALL($B$2:$B$7, $D3)

    Вот как делается ранжирование в Excel. Чтобы лучше понять и, возможно, переработать формулы, обсуждаемые в этом руководстве, вы можете скачать нашу рабочую книгу Sample Rank Excel.

    Я благодарю вас за чтение и надеюсь увидеть вас в нашем блоге на следующей неделе!

    Майкл Браун — увлеченный технологический энтузиаст, стремящийся упростить сложные процессы с помощью программных инструментов. Имея более чем десятилетний опыт работы в технологической отрасли, он отточил свои навыки в Microsoft Excel и Outlook, а также в Google Sheets и Docs. Блог Майкла посвящен тому, чтобы делиться своими знаниями и опытом с другими, предоставляя простые советы и учебные пособия для повышения производительности и эффективности. Являетесь ли вы опытным профессионалом или новичком, в блоге Майкла вы найдете ценную информацию и практические советы, которые помогут вам максимально эффективно использовать эти важные программные инструменты.