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

Вопрос или проблема

1) Скопируйте следующие значения и вставьте в ячейки A1:A8 в Excel.

Заголовок столбца A

600

1200

500

900

500

1300

300

2) Скопируйте следующие значения и вставьте в ячейки B1:B8 в Excel.

Заголовок столбца B

4

2

5

3

5

1

6

3) Скопируйте следующие значения и вставьте в ячейки C1:C8 в Excel.

Заголовок столбца C

=RANK(A2,$A$2:$A$8,0)

=RANK(A3,$A$2:$A$8,0)

=RANK(A4,$A$2:$A$8,0)

=RANK(A5,$A$2:$A$8,0)

=RANK(A6,$A$2:$A$8,0)

=RANK(A7,$A$2:$A$8,0)

=RANK(A8,$A$2:$A$8,0)

4) Следующая картинка показывает, что формула RANK дает неправильный результат.

Эта картинка показывает, что формула RANK дает неправильный результат.

5) Формула RANK дает неправильный результат, потому что 500 существует в столбце A дважды.

6) Знаете ли вы альтернативную формулу для формулы RANK?

7) Обновление: Желаемое решение найдено благодаря Mayukh Bhattacharya следующим образом.

SUMPRODUCT((A2<=$A$2:$A$8)/COUNTIF($A$2:$A$8;$A$2:$A$8))

Формула, которая может помочь, это:

[B2]=LET(src,A2:A8,u,UNIQUE(src),XLOOKUP(src,SORT(u,,-1),SEQUENCE(ROWS(u))))

введите описание изображения здесь

UNIQUE оставляет только уникальные продажи, чтобы позволить им занимать одно место.

SORT сортирует уникальные продажи по убыванию.

Для каждой продажи (src) XLOOKUP находит её в отсортированных уникальных продажах, чтобы получить соответствующее место из последовательности мест (от 1 до 6).

LET позволяет определить временные переменные, такие как ‘src’ и ‘u’, для повторного использования.

Короткие формулы!

[B2]=LET(src,A2:A8,XMATCH(src,SORT(UNIQUE(src),,-1)))

В этой формуле XMATCH предоставляет номер места без генерации SEQUENCE.

То же самое без LET:

=XMATCH(A2:A8,SORT(UNIQUE(A2:A8),,-1))

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

=SUM(--(UNIQUE($A$2:$A$8)>A2))+1

Введите эту формулу в B2 и заполните вниз до B8.

Ответ или решение

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

Проблема с использованием RANK

В приведенном примере вы имеете столбец со значениями в ячейках A1:A8:

600
1200
500
900
500
1300
300

При использовании формулы =RANK(A2,$A$2:$A$8,0) для вычисления ранга значений Excel возвращает неправильные результаты, когда несколько ячеек содержат одинаковые значения, как это происходит с числом 500, которое встречается дважды.

Функция RANK присваивает одинаковый ранг для одинаковых значений. Например, если 500 находится на третьем и четвертом месте по величине, то оба значения будут иметь ранг 3, что приводит к пропуску следующего ранга. Это может запутать пользователей и сделать результаты менее интуитивно понятными.

Альтернативные формулы для точного ранжирования

Существует несколько способов, как можно обойти проблемы с RANK и корректно вычислить ранги. Вот некоторые из наиболее рекомендуемых подходов:

  1. Использование формулы SUMPRODUCT:

    =SUMPRODUCT((A2<=$A$2:$A$8)/COUNTIF($A$2:$A$8,$A$2:$A$8))

    Эта формула использует комбинацию SUMPRODUCT и COUNTIF для вычисления ранг без пропусков, учитывая количество дубликатов.

  2. Использование функции LET с XLOOKUP:

    =LET(src,A2:A8,u,UNIQUE(src),XLOOKUP(src,SORT(u,,-1),SEQUENCE(ROWS(u))))

    Функция LET позволяет создавать временные переменные, такие как src и u, для упрощения формулы. UNIQUE исключает дубликаты, SORT упорядочивает уникальные значения по убыванию, а XLOOKUP использует эти отсортированные значения для нахождения ранга.

  3. Короткая версия с XMATCH:

    =LET(src,A2:A8,XMATCH(src,SORT(UNIQUE(src),,-1)))

    Эта версия более краткая и использует XMATCH для поиска места без необходимости создавать последовательность.

  4. Формула без использования LET:

    =XMATCH(A2:A8,SORT(UNIQUE(A2:A8),,-1))
  5. Подсчет чисел уникальных значений, больших заданного:

    =SUM(--(UNIQUE($A$2:$A$8)>A2))+1

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

Заключение

Функция RANK в Excel может выдавать некорректные результаты, когда в ваших данных есть дубликаты. Для точного ранжирования чисел в таких случаях рекомендуется использовать альтернативные формулы, которые учитывают уникальные значения. Эти методы не только обеспечивают корректное вычисление ранга, но и разъясняют ситуацию с дублирующимися данными. Опираясь на данные альтернативы, вы сможете эффективно управлять большими массивами данных и извлекать из них полезную информацию.

Оцените материал
Добавить комментарий

Капча загружается...