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

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

Author: Sun Last Modified: 2025-07-21

Работа с сгруппированными данными в 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.
    → Возвращает массив значений ИСТИНА/ЛОЖЬ (или 1/0), представляющих, принадлежит ли каждая строка к той же группе, что и A2.
  • (B2<$B$2:$B$11)
    → Это проверяет, сколько значений в B2:B11 больше чем B2.
    → Возвращает ИСТИНА (1), если B2 меньше заданного значения, ЛОЖЬ (0) в противном случае.
  • * (Умножение)
    → Это объединяет два условия:
  • Совпадение группы (A2)
    Значение в B2 меньше других
    → Таким образом, будут учитываться только строки, которые находятся в одной группе и имеют меньшее значение.
  • СУММПРОИЗВ(...)
    → Суммирует количество строк, соответствующих обоим условиям.
  • +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 нажмите Вставка > Модуль, затем вставьте следующий код в открытый модуль:
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. Нажмите Выполнить. Диалоговое окно предложит вам выбрать весь диапазон данных, столбец группы и столбец значений. Затем макрос создаст новый столбец с рангами для каждого значения внутри своей группы.

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

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

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


a screenshot of kutools for excel ai

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

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

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

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

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


Office Tab добавляет вкладки в Office и делает вашу работу намного проще

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