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

Kutools для Office — один пакет. Пять инструментов. Выполняйте больше.

Как создать динамический список топ-10 или N в Excel?

Author Xiaoyang Last modified

Во многих проектах и бизнес-процессах часто требуется ранжировать людей, организации, продукты или другие сущности на основе их производительности или числовых значений. «Список лучших» служит для выделения записей с самыми высокими показателями, таких как лучшие ученики по оценкам, лучшие продавцы или отделы с наибольшим доходом. Например, у вас может быть таблица с оценками студентов, и вы хотите динамически извлечь десять лучших результатов для награждения, анализа или мониторинга образовательных результатов, как показано на скриншоте ниже. Создание динамического списка топ-10 или N в Excel позволяет вам автоматически видеть обновленные результаты при изменении данных, экономя время и снижая риск ошибок при ручном ранжировании. Это руководство представляет несколько практических решений — включая формулы, сводные таблицы и макросы VBA — чтобы помочь вам построить динамический список топ-10 или N для эффективного удовлетворения различных потребностей анализа данных.

create dynamic top10 or n list

Создание динамического списка топ-10 в Excel

Создание динамического списка топ-10 в Office 365

Создание динамического списка топ-10 с помощью сводной таблицы

Создание динамического списка топ-10 с использованием VBA

 

Создание динамического списка топ-10 в Excel

В Excel 2019 и более ранних версиях создание динамического списка топ-10 (или топ-N) предполагает объединение формул для одновременного извлечения как максимальных значений, так и связанных с ними имен или ID. Это решение широко используется и подходит для ситуаций, когда вы хотите, чтобы список обновлялся автоматически при изменении данных. Следующие операции демонстрируют, как этого добиться с помощью классических формул Excel. Эти формулы обеспечивают гибкость и не требуют специальных надстроек Excel, но процесс настройки немного сложнее по сравнению с некоторыми современными функциями динамических массивов.

Формулы для создания динамического списка топ-10

1. Для начала вам нужно извлечь первые 10 значений из вашего диапазона значений. Введите следующую формулу в пустую ячейку (например, G2). После ввода формулы перетащите маркер заполнения вниз для создания динамического списка топ-10 значений. См. скриншот:

=НАИБОЛЬШИЙ($B$2:$B$20;СТРОКА(B$2:B2))
Примечание: Здесь B2:B20 — это диапазон оценок или значений, а B2 — первая ячейка в этом столбце. Настройте эти ссылки на ячейки в зависимости от размера и расположения ваших данных.

apply a formula to extract the top10 values

2. Затем, чтобы отобразить соответствующие имена (или ID), связанные с этими максимальными значениями, введите следующую формулу в ячейку F2. Это формула массива, поэтому после ввода нажмите Ctrl + Shift + Enter для подтверждения. Эта формула находит имена, соответствующие ранее извлеченным максимальным значениям:

=ИНДЕКС($A$2:$A$20;НАИМЕНЬШИЙ(ЕСЛИ($B$2:$B$20=G2;СТРОКА($B$2:$B$20)-СТРОКА($B$1));СЧЁТЕСЛИ($G$2:G2;G2)))
Объяснение параметров:
- A2:A20 — это диапазон, из которого будут извлекаться имена;
- B2:B20 — это диапазон баллов или значений;
- G2 — это максимальное значение из формулы выше;
- B1 — это заголовок списка значений и используется для расчета смещения в функции СТРОКА.
Эта формула динамически связывает самые высокие значения с их именами. Если ваш диапазон значений содержит дубликаты, функция СЧЁТЕСЛИ гарантирует, что каждое совпадающее имя появится только один раз с его оценкой.

use a formula to get relative item

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

drag and fill the formula to other cells

a screenshot of kutools for excel ai

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

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

Формулы для создания динамического списка топ-10 с критериями

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

create a dynamic top10 list with criteria

1. Начните с извлечения первых 10 значений, соответствующих указанному условию (например, «Класс 1») из набора данных. Введите эту формулу в целевую ячейку (например, J2):

=НАИБОЛЬШИЙ(ЕСЛИ($B$2:$B$25=$F$2;$C$2:$C$25);СТРОКА(I2)-СТРОКА(I$1))

2. После ввода формулы нажмите Ctrl + Shift + Enter для подтверждения ее как формулы массива, затем перетащите маркер заполнения вниз, чтобы заполнить другие ячейки. Формула вернет 10 самых высоких значений, которые соответствуют вашему выбранному условию (например, все оценки из «Класса 1»).

apply a formula to extract the top10 values based on criteria

3. Чтобы перечислить соответствующие имена для этих лучших значений согласно вашим критериям, скопируйте и вставьте формулу ниже в ячейку I2 и нажмите Ctrl + Shift + Enter как формулу массива. Затем заполните вниз по мере необходимости, чтобы сгенерировать полный список имен.

=ИНДЕКС($A$2:$A$25;НАИМЕНЬШИЙ(ЕСЛИ(($C$2:$C$25=J2)*($B$2:$B$25=$F$2);СТРОКА($C$2:$C$25)-СТРОКА($C$1));СЧЁТЕСЛИ(J2:$J$2;J2)))

use a formula to create a dynamic top10 list in Office365

Убедитесь, что скорректировали диапазоны в формулах, чтобы они соответствовали фактической структуре ваших данных. Имейте в виду, что использование больших диапазонов данных с формулами массива может замедлить производительность. Если дублирующиеся значения появятся в вашем списке топ-10, формула корректно обработает повторяющиеся оценки и покажет несколько имен студентов, если их оценки равны.


Создание динамического списка топ-10 в Office 365

Хотя более ранним версиям Excel требовалось комбинирование нескольких функций с формулами массива, Office 365 (и Excel 2021) вводят такие функции динамических массивов, как ИНДЕКС, СОРТИРОВКА, ПОСЛЕДОВАТЕЛЬНОСТЬ и ФИЛЬТР, которые значительно упрощают рабочий процесс. Эти функции упрощают создание динамических списков топ-10, уменьшают количество ошибок и особенно полезны для таблиц, которые часто растут или меняются. Если вы работаете в среде с постоянно обновляемыми данными, эти функции могут упростить анализ и позволить принимать бизнес-решения быстрее.

Формула для создания динамического списка топ-10

Чтобы извлечь и отобразить динамический список топ-10 с использованием Office 365, введите следующую формулу в желаемую выходную ячейку. Все, что вам нужно сделать, это настроить диапазоны и числа в зависимости от ваших потребностей, и формула автоматически покажет последние результаты топ-10 каждый раз, когда данные изменяются.

=ИНДЕКС(СОРТИРОВКА(A2:B20;2;-1);ПОСЛЕДОВАТЕЛЬНОСТЬ(10);{1;2})

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

use a formula to create a dynamic top10 list in Office365

Советы:

Функция СОРТИРОВКА:

=СОРТИРОВКА(массив; [индекс_сортировки]; [порядок_сортировки]; [по_колонке])

  • массив: Диапазон, который вы хотите отсортировать.
  • [индекс_сортировки]: Номер столбца, по которому нужно сортировать. Для типичной таблицы оценок это часто второй столбец.
  • [порядок_сортировки]: Используйте 1 для возрастания или -1 для убывания. Чтобы получить максимальные оценки, используйте -1.
  • [по_колонке]: Определяет, сортировать по столбцам (ИСТИНА) или по строкам (ЛОЖЬ или опущено).

Например: СОРТИРОВКА(A2:B20;2;-1) сортирует A2:B20 по второму столбцу в порядке убывания.


Функция ПОСЛЕДОВАТЕЛЬНОСТЬ:

=ПОСЛЕДОВАТЕЛЬНОСТЬ(строки; [столбцы]; [начало]; [шаг])

  • строки: Количество строк для возврата, например, 10 для списка топ-10.
  • [столбцы]: (Необязательно) Количество столбцов для возврата.
  • [начало]: (Необязательно) Начальное значение.
  • [шаг]: (Необязательно) Шаг увеличения.

ПОСЛЕДОВАТЕЛЬНОСТЬ(10) генерирует числа от 1 до 10, позволяя ИНДЕКС выбрать 10 лучших отсортированных результатов.

Объединяя их, =ИНДЕКС(СОРТИРОВКА(A2:B20;2;-1);ПОСЛЕДОВАТЕЛЬНОСТЬ(10);{1;2}) дает вам динамический двухстолбцовый список топ-10.


Формула для создания динамического списка топ-10 с критериями

Если вам нужно извлечь топ-10 для определенной группы, такой как «Класс 1», эти продвинутые функции Office 365 могут создать список топ-N, включая только те строки, которые соответствуют вашим критериям. Разместите формулу ниже в нужном месте и настройте диапазоны и ячейку критериев по мере необходимости:

=ИНДЕКС(СОРТИРОВКА(ФИЛЬТР(A2:C25;B2:B25=F2);3;-1);ПОСЛЕДОВАТЕЛЬНОСТЬ(10);{1;3})

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

another formula to create a dynamic top10 list with criteria in office365

Советы:

Функция ФИЛЬТР:

=ФИЛЬТР(массив; условие; [если_пусто])

  • массив: Диапазон ячеек для фильтрации.
  • условие: Условие (например, равно заданному классу) для включения.
  • [если_пусто]: (Необязательно) Что отобразить, если результаты не соответствуют критериям.

=ФИЛЬТР(A2:C25;B2:B25=F2) возвращает только те строки, где столбец B соответствует значению в F2.


Создание динамического списка топ-10 с помощью сводной таблицы

Сводная таблица: Автоматическое отображение топ-N результатов интерактивно

Альтернативный способ создания динамического списка топ-N — использование функции сводной таблицы Excel. Этот метод особенно подходит для больших наборов данных, интерактивного анализа (например, быстрого изменения количества лучших элементов или применения фильтров) или когда вы хотите избежать сложных формул. Сводные таблицы удобны в использовании и автоматически обновляются при изменении данных, что делает их отличными для информационных панелей или отчетов, которые передаются другим.

Чтобы создать динамический список топ-N с помощью сводной таблицы:

  1. Щелкните внутри своей таблицы данных, затем перейдите к Вставка > Сводная таблица.
  2. В диалоговом окне Сводной таблицы выберите, куда вы хотите поместить сводную таблицу, и нажмите OK.
  3. Перетащите поле «Имя» (или аналогичный идентификатор) в область Строки.
  4. Перетащите поле «Оценка» (или столбец значений) в область Значения. Обычно по умолчанию установлено «Сумма» или «Количество». Для списка лучших вы обычно хотите «Сумму» или «Максимум». При необходимости измените вычисление поля значений, щелкнув правой кнопкой мыши и выбрав Сгруппировать значения по.
  5. Отсортируйте столбец «Оценка» по убыванию, щелкнув правой кнопкой мыши значение и выбрав Сортировка > Сортировка от наибольшего к наименьшему.
  6. Чтобы ограничить результаты топ-N, щелкните стрелку выпадающего списка Метки строк, выберите Фильтры значений > Первые 10..., установите число (например, Топ-10) и поле для фильтрации, затем нажмите OK.

Ваша сводная таблица теперь показывает динамический топ-10 (или любой N, который вы указали). Чтобы изменить топ-N, просто снова зайдите в настройки фильтра. Если ваши данные изменяются, обновите сводную таблицу, чтобы мгновенно обновить рейтинги.

Преимущества этого подхода включают быструю настройку, простую сортировку и интерактивную настройку. Однако сводные таблицы не могут автоматически добавлять соответствующие строки из других столбцов, если они не включены в области Строки или Значения. Продвинутые пользователи могут дополнительно настраивать отчеты, группируя, создавая фильтры или включая фильтр Топ-N в информационные панели.


Создание динамического списка топ-10 с использованием VBA

Макрос VBA: Автоматическая генерация и обновление списка топ-N

Использование макроса VBA подходит для пользователей, работающих с большими объемами данных или часто обновляемыми данными, где требуется автоматизация извлечения и обновления динамического списка топ-N. Макросы идеально подходят для уменьшения рутинных задач и обеспечения последовательности. Вы можете создать процедуру, которая сортирует данные и копирует только первые N строк в определенное место каждый раз при выполнении.

Чтобы использовать макрос VBA для создания динамического списка топ-N, следуйте этим шагам:

  1. Щелкните Разработчик > Visual Basic, чтобы открыть редактор VBA. (Если вы не видите вкладку Разработчик, перейдите к Файл > Параметры > Настройка ленты и включите «Разработчик».)
  2. В окне VBA щелкните Вставка > Модуль, чтобы добавить новый модуль.
  3. Вставьте следующий код VBA в модуль:
Sub ExtractTopNList()
'Updated by Extendoffice 2025/7/24
    Dim DataRange As Range
    Dim OutputRange As Range
    Dim N As Integer
    Dim ws As Worksheet, tempWS As Worksheet
    Dim xTitleId As String
    Dim LastCol As Long
    
    On Error Resume Next
    xTitleId = "KutoolsforExcel"
    
    Set ws = ActiveSheet
    Set DataRange = Application.InputBox("Select the full data range to analyze (including headers)", xTitleId, ws.UsedRange.Address, Type:=8)
    Set OutputRange = Application.InputBox("Select the top-left cell of the output area", xTitleId, "", Type:=8)
    N = Application.InputBox("How many top items to extract? (Enter a positive integer)", xTitleId, 10, Type:=1)
    
    If DataRange Is Nothing Or OutputRange Is Nothing Or N < 1 Then Exit Sub
    
    ' Create a temporary worksheet to avoid sorting original data
    Set tempWS = Worksheets.Add(After:=Worksheets(Worksheets.Count))
    DataRange.Copy tempWS.Range("A1")
    
    ' Determine last column for sorting key
    LastCol = DataRange.Columns.Count
    
    ' Sort in temporary sheet
    tempWS.UsedRange.Sort Key1:=tempWS.Cells(1, LastCol), Order1:=xlDescending, Header:=xlYes
    
    ' Copy headers and top N rows to output
    tempWS.Rows(1).Copy Destination:=OutputRange
    tempWS.Range("A2").Resize(N, LastCol).Copy Destination:=OutputRange.Offset(1, 0)
    
    ' Optional: Delete temporary sheet
    Application.DisplayAlerts = False
    tempWS.Delete
    Application.DisplayAlerts = True
    
    Application.CutCopyMode = False
End Sub

4. Для выполнения макроса убедитесь, что ваши данные правильно организованы в таблицу с заголовками. Нажмите F5 или щелкните Run button кнопку в редакторе VBA. Вам будет предложено:

  1. Выбрать диапазон данных (включая заголовки для правильной сортировки).
  2. Выбрать ячейку вывода для вставки результатов.
  3. Введите число N (например, 10 для Топ-10).

Макрос скопирует первые N записей (включая заголовки) в указанное вами место.

Рекомендуется использовать это решение в резервной копии книги при первом тестировании. Если возникают ошибки (например, выбор неверного диапазона), повторите выполнение и убедитесь, что ваши диапазоны и структура данных правильны.

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

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


Подведем итог: Excel поддерживает различные методы для создания и поддержания динамического списка топ-N — от традиционных формул до мощных функций Office 365, сводных таблиц для интерактивного анализа и макросов VBA для продвинутой автоматизации. Выберите метод, который лучше всего подходит для вашего рабочего процесса и масштаба данных. Использование формул эффективно для большинства ручных анализов, функции Office 365 обеспечивают наибольшую простоту и мощность, сводные таблицы превосходны для быстрых и гибких сводок, а VBA особенно полезен для автоматизации больших, повторяющихся задач ранжирования. Всегда проверяйте целостность ваших формул или кода и адаптируйте ссылки на ячейки, чтобы они соответствовали любым изменениям в структуре данных по мере развития вашего проекта.


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

🤖 Kutools AI Aide: Совершенно новый подход к анализу данных благодаря: Интеллектуальное выполнение |  Генерация кода  |  Создание пользовательских формул |  Анализ данных и построение диаграмм  |  Вызов Kutools Functions
Популярные функции: Поиск, выделение или отметка дубликатов | Удалить пустые строки | Объединить столбцы или адреса без потери данных | Округлить ...
Супер ПОИСК: VLOOKUP по нескольким критериям | VLOOKUP по нескольким значениям | Многолистовой поиск | Распознавание нечетких соответствий ...
Расширенный раскрывающийся список: Быстро создать раскрывающийся список | Зависимый раскрывающийся список | Множественный выбор в раскрывающемся списке ...
Менеджер столбцов: Добавить определённое количество столбцов | Переместить столбцы | Переключить видимость скрытых столбцов | Сравнить диапазоны и столбцы ...
Рекомендуемые функции: Сетка фокусировки | Дизайн листа | Улучшенная строка формулы | Управление книгой и листами | Библиотека автотекста | Выбор даты | Объединить данные | Зашифровать/расшифровать ячейки | Отправить письмо по списку | Супер фильтр | Специальный фильтр (фильтр жирный/курсив/зачеркнутый...) ...
Топ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% и уменьшите количество щелчков мышью на сотни ежедневно!

Все надстройки Kutools. Один установщик

Пакет Kutools for Office включает надстройки для Excel, Word, Outlook и PowerPoint, а также Office Tab Pro — идеально для команд, работающих в разных приложениях Office.

Excel Word Outlook Tabs PowerPoint
  • Комплексный набор — надстройки для Excel, Word, Outlook и PowerPoint плюс Office Tab Pro
  • Один установщик, одна лицензия — настройка занимает считанные минуты (MSI-совместимо)
  • Совместная работа — максимальная эффективность между приложениями Office
  • 30-дневная полнофункциональная пробная версия — без регистрации и кредитной карты
  • Лучшее соотношение цены и качества — экономия по сравнению с покупкой отдельных надстроек