Перейти к содержимому

Как ранжировать значения по группам в Excel?

Author: Sun Last Modified: 2025-08-07

Работа с сгруппированными данными в Excel часто требует сравнения значений внутри каждой группы, например, ранжирования объемов продаж по регионам, результатов тестов по классам или сумм транзакций по категориям. Хотя Excel предоставляет мощные инструменты для ранжирования данных, ранжирование внутри групп (также известное как «групповое ранжирование» или «условное ранжирование») требует специального подхода. Это особенно полезно, когда необходимо оценить производительность или выделить верхние и нижние записи среди разных категорий без смешивания результатов между группами. Следующие методы предлагают практические решения для ранжирования значений по группам, облегчая интерпретацию и точный анализ ваших данных в повседневных задачах.
A screenshot showing a grouped data set with ranked values in Excel

Ранжировать значения по группам
Код VBA - Используйте макрос для автоматизации ранжирования значений внутри каждой группы


arrow blue right bubble Ранжировать значения по группам

Для ситуаций, где нужно ранжировать значения в отдельных группах, таких как оценивание студентов по классам или составление списков продаж по разным регионам, Excel не имеет прямой функции «ранжирование по группам». Однако грамотно составленная формула может эффективно выполнить групповое ранжирование без дополнительной обработки данных.

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

Выполните следующие шаги:

  • Подготовьте свои сгруппированные данные в столбцах, например, Группа (A2:A11) и Значение (B2:B11).
  • Выберите пустую ячейку рядом с вашими данными — обычно, в первой строке рядом со значениями, например, ячейка C2.
  • Введите следующую формулу:
=SUMPRODUCT(($A$2:$A$11=A2)*(B2<$B$2:$B$11))+1

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

  • ($A$2:$A$11=A2)
    → Это проверяет, равна ли каждая ячейка в диапазоне A2:A11 значению в A2.
    → Возвращает массив значений TRUE/FALSE (или 1/0), представляющих, принадлежит ли каждая строка к той же группе, что и A2.
  • (B2<$B$2:$B$11)
    → Проверяет, сколько значений в B2:B11 больше, чем B2.
    → Возвращает TRUE (1), если B2 меньше заданного значения, и FALSE (0) в противном случае.
  • * (Умножение)
    → Объединяет два условия:
  • Соответствие группе (A2)
    Значение в B2 меньше других
    → Таким образом, только строки, которые находятся в той же группе и имеют меньшее значение, будут учитываться.
  • SUMPRODUCT(...)
    → Суммирует количество строк, соответствующих обоим условиям.
  • +1
    → Ранги начинаются с 1 (вместо 0), поэтому мы добавляем 1 к количеству меньших значений.

После ввода формулы в C2 перетащите маркер автозаполнения вниз, чтобы заполнить эту формулу для всех соответствующих строк вашего набора данных. Формула автоматически адаптируется для использования группы и значения каждой строки, возвращая ранг внутри этой группы. A screenshot showing the Excel formula applied to rank values by group in a worksheet

Советы и предостережения:

  • Если ваш диапазон большой, не забудьте соответственно обновить ссылки на ячейки.
  • Для рангов в порядке убывания (например, самое высокое значение — 1), измените оператор сравнения в формуле с B2<$B$2:$B$11 на B2>$B$2:$B$11.
  • Чтобы обработать дублирующиеся значения, эта формула присваивает одинаковый ранг равным значениям внутри одной группы. Если вам нужны последовательные уникальные ранги, рассмотрите использование дополнительных вспомогательных столбцов.

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


Код VBA - Используйте макрос для автоматизации ранжирования значений внутри каждой группы

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

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

  1. Нажмите Alt + F11, чтобы открыть редактор VBA. В открывшемся окне Microsoft Visual Basic for Applications нажмите Insert > Module, затем вставьте следующий код в открытый модуль:
Sub RankValuesByGroup()
    Dim DataRange As Range
    Dim GroupRng As Range
    Dim ValueRng As Range
    Dim OutCol As Range
    Dim dictGroups As Object
    Dim arrValues, arrRanks
    Dim i As Long, j As Long
    Dim GroupKey As String
    
    On Error Resume Next
    xTitleId = "KutoolsforExcel"
    
    Set DataRange = Application.InputBox("Select the data table range (including group and value columns)", xTitleId, Selection.Address, Type:=8)
    If DataRange Is Nothing Then Exit Sub
    
    Set GroupRng = Application.InputBox("Select the group column within your range", xTitleId, DataRange.Columns(1).Address, Type:=8)
    Set ValueRng = Application.InputBox("Select the value column to rank within your range", xTitleId, DataRange.Columns(2).Address, Type:=8)
    
    Set OutCol = DataRange.Offset(0, DataRange.Columns.Count).Resize(DataRange.Rows.Count, 1)
    OutCol.Cells(1).Value = "RankByGroup"
    
    Set dictGroups = CreateObject("Scripting.Dictionary")
    arrValues = ValueRng.Value
    arrRanks = ValueRng.Value
    
    ' Build group dictionaries for ranking
    For i = 2 To UBound(arrValues, 1)
        GroupKey = GroupRng.Cells(i, 1).Value
        If Not dictGroups.Exists(GroupKey) Then
            dictGroups.Add GroupKey, CreateObject("System.Collections.ArrayList")
        End If
        dictGroups(GroupKey).Add arrValues(i, 1)
    Next i
    
    ' Rank within each group
    For i = 2 To UBound(arrValues, 1)
        GroupKey = GroupRng.Cells(i, 1).Value
        Dim countLower As Long
        countLower = 0
        For j = 0 To dictGroups(GroupKey).Count - 1
            If dictGroups(GroupKey)(j) < arrValues(i, 1) Then
                countLower = countLower + 1
            End If
        Next j
        arrRanks(i, 1) = countLower + 1
    Next i
    
    ' Output results
    For i = 2 To UBound(arrRanks, 1)
        OutCol.Cells(i, 1).Value = arrRanks(i, 1)
    Next i
    
    MsgBox "Ranking by group completed.", vbInformation, xTitleId
End Sub
  1. Нажмите Run. Появится диалоговое окно, которое предложит выбрать полный диапазон данных, столбец группы и столбец значений. Затем макрос создаст новый столбец с рангами для каждого значения внутри своей группы.

Примечания и устранение неполадок:

  • Убедитесь, что выбор столбцов соответствует вашим данным: столбцы группы и значений должны быть правильно выровнены.
  • Если заголовок данных включен, скорректируйте начальный индекс цикла в коде для правильного ранжирования (в соответствии с вашей структурой данных).
  • Для ранжирования в порядке убывания измените условие If dictGroups(GroupKey)(j) < arrValues(i,1) соответственно.
  • Если вы столкнетесь с предупреждениями о разрешениях или безопасности макросов, проверьте настройки безопасности макросов в Excel под File > Options > Trust Center.

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


a screenshot of kutools for excel ai

Раскройте магию Excel с Kutools AI

  • Умное выполнение: Выполняйте операции с ячейками, анализируйте данные и создавайте диаграммы — всё это посредством простых команд.
  • Пользовательские формулы: Создавайте индивидуальные формулы для оптимизации ваших рабочих процессов.
  • Кодирование VBA: Пишите и внедряйте код VBA без особых усилий.
  • Интерпретация формул: Легко разбирайтесь в сложных формулах.
  • Перевод текста: Преодолейте языковые барьеры в ваших таблицах.
Улучшите возможности Excel с помощью инструментов на базе ИИ. Скачать сейчас и испытайте беспрецедентную эффективность!

Лучшие инструменты для повышения продуктивности в Office

🤖 Kutools AI Aide: Переворот в анализе данных на основе: Интеллектуальное выполнение   |  Сгенерировать код  |  Создать Пользовательские Формулы  |  Анализ данных и генерация диаграмм  |  Вызов Kutools Functions
Популярные функции: Найти, выделить или отметить дубликаты   |  Удалить пустые строки   |  Объединить столбцы или ячейки без потери данных   |   Округлить...
Супер ПОИСК: VLookup с несколькими критериями    VLookup с несколькими значениями  |   Многолистовой поиск   |   Распознавание нечетких соответствий ....
Расширенный раскрывающийся список: Быстро создать раскр. список   |  Зависимый раскрывающийся список   |  Множественный выбор в раскрывающемся списке ....
Менеджер столбцов: Добавить определенное количество столбцов  |  Переместить столбцы  |  Переключить статус видимости скрытых столбцов  |  Сравнить диапазоны и столбцы ...
Рекомендуемые функции: Сетка фокусировки   |  Дизайн листа   |   Улучшенная строка формулы    Управление книгой и листами   |  Библиотека автотекста (Auto Text)   |  Выбор даты   |  Объединить данные   |  Шифрование/Расшифровка ячеек    Отправить письмо по списку   |  Супер фильтр   |   Специальный фильтр (фильтр по жирному/курсиву/зачеркиванию...) ...
Топ–15 наборов инструментов: 12 текстовых инструментов (Добавить текст, Удалить определенные символы, ...)   |   50+ типов диаграмм (Диаграмма Ганта, ...)   |   40+ практических формул (Расчет возраста на основе даты рождения, ...)   |   19 инструментов вставки (Вставить QR-код, Вставить изображение из пути, ...)   |  12 инструментов преобразования (Преобразовать в слова, Конвертация валюты, ...)   |  7 инструментов объединения и разделения (Расширенное объединение строк, Разделить ячейки, ...)   |   ... и многое другое
Используйте Kutools на вашем предпочитаемом языке – поддерживаются английский, испанский, немецкий, французский, китайский и более40 других языков!

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


Office Tab добавляет вкладочный интерфейс в Office, делая вашу работу значительно проще

  • Включите редактирование и чтение во вкладках в Word, Excel, PowerPoint, Publisher, Access, Visio и Project.
  • Открывайте и создавайте несколько документов во вкладках одного окна, а не в новых окнах.
  • Увеличьте свою продуктивность на50% и сократите сотни кликов мышью ежедневно!