Рейтинг повторяющихся значений в excel
Как ранжировать повторяющиеся значения в Excel?
Допустим, вы получили стенограмму, показанную слева, и хотите получить свой рейтинг без сортировки, как вы могли бы сделать это в Excel? А что, если ваш счет повторяется с другими? В этой статье я представлю несколько формул ранжирования, чтобы решить эту проблему в Excel.
Легко объединяйте строки на основе дубликатов в одном столбце, а затем сортируйте объединенные строки по дубликатам в Excel
С Kutools для Excel Расширенные ряды комбинирования Функция, пользователи Excel могут быстро объединить все строки на основе повторяющихся значений в одном столбце. После объединения будет легко ранжировать / отсортировать объединенные строки по повторяющимся значениям с помощью Данные > Сортировать. Полнофункциональная бесплатная 30-дневная пробная версия!
Вкладка Office позволяет редактировать и просматривать в Office с вкладками и значительно упрощает работу .
- Повторное использование чего угодно: Добавляйте наиболее часто используемые или сложные формулы, диаграммы и все остальное в избранное и быстро используйте их в будущем.
- Более 20 текстовых функций: Извлечь число из текстовой строки; Извлечь или удалить часть текстов; Преобразование чисел и валют в английские слова.
- Инструменты слияния : Несколько книг и листов в одну; Объединить несколько ячеек / строк / столбцов без потери данных; Объедините повторяющиеся строки и сумму.
- Разделить инструменты : Разделение данных на несколько листов в зависимости от ценности; Из одной книги в несколько файлов Excel, PDF или CSV; От одного столбца к нескольким столбцам.
- Вставить пропуск Скрытые / отфильтрованные строки; Подсчет и сумма по цвету фона ; Отправляйте персонализированные электронные письма нескольким получателям массово.
- Суперфильтр: Создавайте расширенные схемы фильтров и применяйте их к любым листам; Сортировать по неделям, дням, периодичности и др .; Фильтр жирным шрифтом, формулы, комментарий .
- Более 300 мощных функций; Работает с Office 2007-2019 и 365; Поддерживает все языки; Простое развертывание на вашем предприятии или в организации.
Удивительный! Использование эффективных вкладок в Excel, таких как Chrome, Firefox и Safari!
Экономьте 50% своего времени и сокращайте тысячи щелчков мышью каждый день!
Функция ранжирования в Excel
Обычно мы можем применить функцию Rank и легко вернуть номер ранга в Excel.
Выберите пустую ячейку, введите формулу = РАНГ ("84"; B2: B23) в него и нажмите Enter ключ. См. Снимок экрана:
Примечание: в формуле = RANK («84», B2: B23) 84 - это ваш результат, а B2: B23 - это диапазон баллов, в котором вы хотите ранжировать свой балл, и вы можете изменить их в зависимости от ваших потребностей.
Ранжируйте повторяющиеся значения и возвращайте лучший рейтинг или средний рейтинг в Excel
Иногда ваша оценка может совпадать с другими в диапазоне оценок, как показано на скриншоте слева. Если вы хотите ранжировать свой результат и вернуть номер высшего ранга в Excel, вы можете сделать следующее:
Выберите пустую ячейку, введите формулу = RANK.EQ («84»; B2: B23) в него и нажмите Enter ключ.
Ноты:
(1) В формуле = RANK.EQ ("84", B2: B23), 84 это ваш счет, и B2: B23 - это диапазон баллов, в котором вы хотите ранжировать свой балл, и вы можете изменить его в зависимости от ваших потребностей.
(2) Для ранжирования повторяющихся значений и возврата среднего ранга используйте эту формулу = RANK.AVG ("84"; B2: B23) .
(3) Обе формулы не работают в Excel 2007.
Ранжируйте повторяющиеся значения с помощью Kutools for Excel
Если у вас установлен Kutools for Excel, вы можете легко ранжировать повторяющиеся значения в Excel. Пожалуйста, сделайте следующее:
Kutools for Excel - Включает более 300 удобных инструментов для Excel. Полнофункциональная бесплатная 30-дневная пробная версия, кредитная карта не требуется! Бесплатная пробная версия сейчас!
Kutools for Excel - Combines more than 300 Advanced Functions and Tools for Microsoft Excel
1. Выберите диапазон, в котором вы будете ранжировать дубликаты, и нажмите Кутулс > Content > Расширенные ряды комбинирования. Смотрите скриншот ниже:
2. В открывшемся диалоговом окне Advanced Combine Rows Pease (см. Снимок экрана выше):
(1) Выберите столбец с дубликатами (в нашем случае выберите Счет столбец) и щелкните Основной ключ;
(2) Выберите столбец, который вы хотите объединить (в нашем случае выберите Имя и фамилия столбец) и щелкните Сочетать > Запятая.
И теперь все имена с одинаковым счетом объединены в одну ячейку, как показано на скриншоте ниже.
3. Выберите столбец (Счет столбец в нашем случае) вы оцените и нажмите Данные > Сортировать от большего к меньшему or Сортировать от наименьшего к наибольшему, а затем проверьте Расширить выбор и нажмите Сортировать в диалоговом окне "Сортировка предупреждений". Смотрите скриншоты ниже:
И теперь строки в выбранном диапазоне объединяются на основе шкал, сортируются / ранжируются по баллам. Смотрите скриншот ниже:
Kutools for Excel - Включает более 300 удобных инструментов для Excel. Полнофункциональная бесплатная 30-дневная пробная версия, кредитная карта не требуется! Get It Now
Демо: ранжируйте повторяющиеся значения с помощью Kutools for Excel
Kutools для Excel Расширенная сортировка Утилита поддерживает быструю сортировку данных в Excel по длине текста, фамилии, абсолютному значению, частоте и т. д. Полнофункциональная бесплатная 30-дневная пробная версия!
Как ранжировать дубликаты, не пропуская числа в Excel?
В общем, когда мы ранжируем список с дубликатами, некоторые числа будут пропущены, как показано на скриншоте 1 ниже, но в некоторых случаях мы просто хотим ранжировать по уникальным номерам или ранжировать дубликаты с тем же номером, не пропуская числа, как показано на скриншоте 2. У вас есть какие-нибудь хитрости для решения этой задачи в Excel?
Дубликат ранга без пропуска чисел
Если вы хотите ранжировать все данные по уникальным номерам, выберите пустую ячейку рядом с данными, C2, введите эту формулу =RANK(A2,$A$2:$A$14,1)+COUNTIF($A$2:A2,A2)-1 , и перетащите дескриптор автозаполнения вниз, чтобы применить эту формулу к ячейкам. Смотрите скриншот:
Если вы хотите ранжировать дубликаты с одинаковыми номерами, вы можете применить эту формулу =SUM(IF(A2>$A$2:$A$14,1/COUNTIF($A$2:$A$14,$A$2:$A$14)))+1 в следующей ячейке данных нажмите Shift + Ctrl + Enter вместе и перетащите маркер автозаполнения вниз. Смотрите скриншот:
Наконечник.Если вы хотите быстро выбрать и выделить повторяющиеся или уникальные значения, попробуйте использовать Kutools for Excel's Выберите повторяющиеся и уникальные ячейки утилита, как показано на следующем снимке экрана. Полная функция без ограничений в течение 30 дней, пожалуйста, скачайте и получите бесплатную пробную версию сейчас.
Число — число, для которого определяется ранг.
Нечисловые значения в ссылке игнорируются. Числам, сохраненным в текстовом формате, ранг также не присваивается, функция воспринимает их как текст.
Порядок — число, определяющее способ упорядочения.
- Если порядок равен 0 (нулю) или опущен, то MS EXCEL присваивает ранг=1 максимальному числу, меньшим значениям присваиваются б о льшие ранги.
- Если порядок — любое ненулевое число, то то MS EXCEL присваивает ранг=1 минимальному числу, б о льшим значениям присваиваются б о льшие ранги.
Примечание : Начиная с MS EXCEL 2010 для вычисления ранга также используются функции РАНГ.СР() и РАНГ.РВ() . Последняя функция аналогична РАНГ() .
Определяем ранг в списке без повторов
Если список чисел находится в диапазоне A7:A11 , то формула =РАНГ(A7;$A$7:$A$11) определит ранг числа из ячейки А7 (см. файл примера ).
Т.к. аргумент порядок опущен, то MS EXCEL присвоил ранг=1 максимальному числу (50), а максимальный ранг (5 = количеству значений в списке) - минимальному (10).
Альтернативный вариант: =СЧЁТЕСЛИ($A$7:$A$11;">"&A7)+1
В столбце С приведена формула =РАНГ(A7;$A$7:$A$11;1) с рангом по возрастанию, ранг=1 присвоен минимальному числу. Альтернативный вариант: =СЧЁТЕСЛИ($A$7:$A$11;"
Если исходный список отсортировать , то ранг числа будет его позицией в списке.
Ранг по условию
Если список состоит из значений, относящихся к разным группам (например, к разным маркам машин), то ранг можно вычислить не только относительно всей совокупности данных, но и относительно данных каждой отдельной группы.
В файле примера ранг по условию (условием является принадлежность значения к групп) вычислен с помощью формулы:
В столбце А содержатся названия группы, в столбце В - значения.
Связь функций НАИБОЛЬШИЙ() / НАИМЕНЬШИЙ() и РАНГ()
Функции НАИБОЛЬШИЙ() и РАНГ() являются взаимодополняющими в том смысле, что записав формулу =НАИБОЛЬШИЙ($A$7:$A$11;РАНГ(A7;$A$7:$A$11)) мы получим тот же исходный массив A7:A11 .
Определяем ранг в списке с повторами
Если список содержит повторы , то повторяющимся значениям (выделено цветом) будет присвоен одинаковый ранг (максимальный, если использована функция РАНГ() или РАНГ.РВ() ) или среднее значение, если РАНГ.СР() ). Наличие повторяющихся чисел влияет на ранги последующих чисел. Например, если в списке целых чисел, отсортированных по возрастанию, дважды встречается число 10, имеющее ранг 5, число 11 будет иметь ранг 7 (ни одно из чисел не будет иметь ранга 6).
Иногда это не удобно и требуется, чтобы ранги не повторялись (например, при определении призовых мест, когда нельзя занимать нескольким людям одно место).
В этом нам поможет формула =РАНГ(A37;A$37:A$44)+СЧЁТЕСЛИ(A$37:A37;A37)-1
Предполагается, что исходный список с числами находится в диапазоне А37:А44 .
Примечание . В MS EXCEL 2010 добавилась функция РАНГ.РВ(число;ссылка;[порядок]) Если несколько значений имеют одинаковый ранг, возвращается наивысший ранг этого набора значений (присваивает повторяющимся числам одинаковые значения ранга). В файле примера дается пояснение работы этой функции. Также добавилась функция РАНГ.СР(число;ссылка;[порядок]) Если несколько значений имеют одинаковый ранг, возвращается среднее.
Массив рангов
Для построения некоторых сложных формул массива может потребоваться массив рангов, т.е. тот же набор рангов, но в одной ячейке.
Как видно из картинки выше, значения из диапазона В60:В67 и в ячейке D60 совпадают. Такой массив можно получить с помощью формулы =РАНГ(A60:A67;A60:A67) или с помощью формулы =СЧЁТЕСЛИ(A60:A67;">"&A60:A67)+1
Ранги по возрастанию можно получить с помощью формулы =РАНГ(A60:A67;A60:A67;1) или =СЧЁТЕСЛИ(A60:A67;" .
Про поиск и подсветку дубликатов в разных ячейках и диапазонах я уже не раз писал, но что делать если нужно найти и, возможно, удалить повторяющиеся слова внутри ячейки? Например, мы имеем вот такую таблицу с данными (разделителями могут быть не обязательно пробелы):
Хорошо видно, что некоторые имена в списках внутри ячеек повторяются. Давайте посмотрим, что можно с этим сделать.
Способ 1. Ищем повторения: текст по столбцам и формула массива
Это не самый удобный и быстрый, но зато самый простой вариант решения задачи "на коленке". Выделим исходный список и разобъем его на столбцы по пробелам с помощью команды Данные - Текст по столбцам (Data - Text to columns) . В открывшемся окне трёхшагового Мастера выберем формат По разделителю (By delimiter) на первом шаге и поставим флажок Пробел (Space) на втором:
Если в исходных данных могут быть лишние пробелы, то лучше включить и опцию Считать последовательные разделители одним (Treat consecutive delimiters as one) - это избавит нас от лишних столбцов.
На третьем шаге в поле Поместить в зададим пустую ячейку рядом с таблицей, чтобы результаты не затёрли нам исходные данные и нажмём на Готово (Finish) :
Наши данные разделятся по ячейкам. Останется подсчитать количество повторов в каждой строке с помощью небольшой, но хитрой формулы массива:
В английской версии это будет =SUMPRODUCT(N(COUNTIF(B2:G2,B2:G2)>1))
Давайте разберём логику её работы на примере первой строки.
- Сначала мы с помощью формулы СЧЁТЕСЛИ( B2:G2 ; B2:G2 ) вычисляем по очереди количество вхождений каждого имени в диапазон B2:G2 и получаем на выходе массив 2,1,2,1>, т.к. Иван встречается в первой строке 1 раз, Елена - 2 раза, Сергей - 1 и т.д.
- Проверяем с помощью СЧЁТЕСЛИ(B2:G2;B2:G2) >1 какие из полученных чисел больше единицы, т.е. где у нас повторы. На выходе эта формула выдаст нам массив результатов проверки в виде .
- Переводим логические значения ЛОЖЬ и ИСТИНА в более удобные для подсчета 0 и 1, соответственно, с помощью функции Ч. На выходе получаем массив >.
- Суммируем все элементы получившегося массива функцией СУММПРОИЗВ. Можно было бы использовать и обычную функцию СУММ, но тогда пришлось бы жать вместо привычного Enter сочетание клавиш Ctrl + Shift + Enter , чтобы ввести формулу как формулу массива.
По получившемуся столбцу можно легко отфильтровать строки с повторами и работать потом с ними дальше уже вручную.
Минусы такого способа, впрочем, весьма очевидны: при изменении в исходных данных придётся повторять всю процедуру заново, дубликаты не очень заметны и удалять их тоже надо врукопашную. Поэтому идём дальше.
Способ 2. Выделение цветом повторов внутри ячейки макросом
Если дубликаты нужно именно наглядно показать, то удобнее будет использовать для этого специальный макрос. Откроем редактор Visual Basic одноимённой кнопкой на вкладке Разработчик (Developer - Visual Basic) или сочетанием клавиш Alt + F11 . Вставим в книгу новый пустой модуль через меню Insert - Module и скопируем туда вот такой код:
Теперь можно вернуться в главное окно Excel, выделить ячейки с текстом и запустить созданный макрос через кнопку Макросы на вкладке Разработчик (Developer - Macros) или сочетанием клавиш Alt + F8 . Этот макрос проходит по всем выделенным ячейкам и помечает повторения красным цветом шрифта прямо внутри ячейки:
Если нужно, чтобы цветом выделялись только клоны, но не первые вхождения (т.е. только вторая и третья, но не первая Алиса, например), то достаточно будет просто убрать из кода строку 20.
Способ 3. Выводим повторы в соседний столбец
Если повторы внутри ячеек нужно не просто подсветить, а явным образом вывести, например, в соседний столбец, то удобнее будет использовать для этого макрофункцию, созданную по образу предыдущего макроса. Добавим в редакторе Visual Basic новый модуль и вставим туда код нашей функции GetDuplicates:
Эта функция, как легко догадаться, принимает в качестве единственного аргумента ячейку с текстом и выводит в качестве результата все повторы, которые там найдет:
Способ 4. Удаление повторов внутри ячейки макросом
Если нужно просто удалить дубликаты внутри ячейки, чтобы все оставшиеся там слова не повторялись, то макрос будет похож на предыдущий, но попроще:
Способ 5. Удаление повторов внутри ячейки через Power Query
Этот способ использует бесплатную надстройку Excel для обработки данных под названием Power Query. Для Excel 2010-2013 скачать её можно с сайта Microsoft, а в Excel 2016-2019 она уже встроена по умолчанию. Огромным плюсом этого варианта является возможность автоматического обновления - если в будущем исходные данные изменятся, то нам не придется заново проделывать всю обработку (как в Способе 1) или запускать макрос (как в Способе 4) - достаточно будет просто обновить созданный запрос.
Сначала наши данные нужно загрузить в Power Query. Проще всего для этого превратить нашу таблицу в "умную" сочетанием клавиш Ctrl + T или кнопкой Форматировать как таблицу на вкладке Главная (Home - Format as Table) , а затем нажать кнопку Из таблицы/диапазона (From table/range) на вкладке Power Query (если у вас Excel 2010-2013) или на вкладке Данные (если у вас Excel 2016 или новее):
Поверх окна Excel откроется окно редактора запросов Power Query с загруженными туда нашими данными:
Дальше делаем следующую цепочку действий:
Удаляем ненужный пока шаг Измененный тип (Changed Type) справа в панели применённых шагов с помощью крестика слева от шага.
Чтобы можно было потом идентифицировать принадлежность каждого имени к исходной строке - добавляем столбец с нумерацией строк на вкладке Добавление столбца - Столбец индекса - От 1 (Add Column - Index Column - From 1) :
Выделяем столбец с именами и жмём на вкладке Преобразование - Разделить столбец - По разделителю (Transform - Split Column - By delimiter) , а в открывшемся окне выбираем деление по каждому пробелу и - главное - деление на строки, а не на столбцы в расширенных параметрах:
После нажатия на ОК увидим следующее:
Теперь выделяем оба столбца (удерживая клавишу Ctrl или Shift ) и удаляем дубликаты через Главная - Удалить строки - Удалить дубликаты (Home - Remove Rows - Remove Duplicates) .
Осталось собрать всё обратно в ячейки :) Для этого выделим столбец Индекс и используем команду Группировать по на вкладке Преобразование (Transform - Group By) со следующими параметрами:
После нажатия на ОК наши имена сгруппируются во вложенные таблицы, имитирующие начальные ячейки - только уже без повторов. Увидеть содержимое свёрнутых таблиц можно, если щёлкнуть мышью в фон ячейки рядом со словом Table (но не в слово Table!):
Осталось вытащить все имена из первой колонки каждой таблицы и склеить их через пробел. Это можно сделать с помощью небольшой формулы на встроенном в Power Query языке М. Выберем на вкладке Добавление столбца команду Настраиваемый столбец (Add Column - Custom Column) и введём в открывшееся окно имя нового столбца и формулу (с соблюдением регистра!):
Осталось удалить ненужные более столбцы Индекс и Ячейки, щелкнув по их заголовкам правой кнопкой мыши и выбрав команду Удалить столбцы (Remove Columns) и выгрузить результаты на лист через Главная - Закрыть и загрузить - Закрыть и загрузить в (Home - Close & Load - Close & Load to..) :
Задача решена! Если в будущем данные в исходной "умной" таблице изменятся или к ней будут дописаны новые строки, то достаточно будет просто обновить запрос, щёлкнув по результирующей зелёной таблице правой кнопкой мыши и выбрав команду Обновить или нажав сочетание клавиш Ctrl + Alt + F5 .
Из исходной таблицы с повторяющимися значениями отберем только те значения, которые имеют повторы. Теперь при добавлении новых значений в исходный список, новый список будет автоматически содержать только те значения, которые повторяются.
Пусть в столбце А имеется список с повторяющимися значениями, например список с названиями компаний. В некоторых ячейках исходного списка имеются повторы.
Задача
Создадим новый список, который содержит только те значения, которые повторяются. Дополнительное условие: при добавлении новых значений в исходный список, новый список должен автоматически включать только повторяющиеся значения.
Решение
Список значений, которые повторяются, создадим в столбце B с помощью формулы массива . (см. файл примера ).
Введем в ячейку B5 формулу массива : =ЕСЛИОШИБКА(ИНДЕКС(ИсхСписок; ПОИСКПОЗ(0;СЧЁТЕСЛИ(B4:$B$4;ИсхСписок)+ ЕСЛИ(СЧЁТЕСЛИ(ИсхСписок;ИсхСписок)>1;0;1);0) );"")
Вместо ENTER нужно нажать CTRL + SHIFT + ENTER .
ИсхСписок - это Динамический диапазон (ссылка на исходный список в столбце А ).
Скопируйте формулу вниз с помощью Маркера заполнения (размерность списка значений имеющих повторы должна совпадать с размерностью исходного списка).
В файле примера также приведены перечни, содержащие неповторяющиеся значения и уникальные значения.
С помощью Условного форматирования в исходном списке можно выделить повторяющиеся значения.
Тестируем
1. Добавьте в исходный список название новой компании (в ячейку А20 введите ООО Кристалл)
2. Список неповторяющихся значений (столбец С) автоматически будет обновлен, чтобы включить новое название
3. Добавьте в исходный список название новой компании еще раз (в ячейку А21 снова введите ООО Кристалл)
4. Список неповторяющихся значений автоматически будет обновлен, новое название будет исключено
5. Список повторяющихся значений (столбец B) автоматически будет обновлен, чтобы включить новое название.
СОВЕТ:
Созданный список повторяющихся значений является динамическим, т.е. при добавлении новых значений в исходный список, новый список будет автоматически обновляться. Это очень ресурсоемкая задача и годится для небольших списков 50-100 значений. Если динамический список не нужен, то можно пойти другим путем: см. статью Отбор повторяющихся значений с помощью фильтра .
Читайте также: