Как отсортировать данные в обратном порядке в Excel?
В Excel стандартная формула =RANK(cell, range) присваивает данным ранги так, что наибольшее значение получает ранг 1, а наименьшее — самый низкий номер. Однако иногда требуется изменить эту логику: наименьшему значению присваивается наивысший ранг, а наибольшему — последний, как показано на снимке экрана ниже. Это особенно полезно при анализе данных, где меньшие значения означают лучший результат — например, время прохождения дистанции, затраты или количество ошибок.
Ранжирование данных в обратном порядке|Код VBA: автоматическое присвоение обратных рангов
Ранжирование данных в обратном порядке
Чтобы выполнить обратное ранжирование в Excel, достаточно немного изменить стандартную формулу RANK, добавив дополнительный аргумент. Этот простой приём позволяет легко сортировать данные от наименьшего к наибольшему — в обратном порядке по сравнению с настройками по умолчанию.
Выберите пустую ячейку, в которую вы хотите поместить результат обратного ранжирования. Предположим, ваш диапазон данных расположен в ячейках с B2 по B10. Введите следующую формулу в первую ячейку рядом с вашими данными (например, в ячейку C2):
=RANK(B2,$B$2:$B$10,1) После ввода формулы нажмите Enter. Чтобы применить формулу ко всем ячейкам столбца, воспользуйтесь маркером заполнения: наведите курсор на правый нижний угол ячейки с формулой (C2), дождитесь появления знака «плюс» и перетащите его вниз до конца диапазона рядом с вашими данными (в данном примере — до ячейки C10).
Если ваши диапазоны данных отличаются, просто скорректируйте ссылки на ячейки в формуле в соответствии с вашими фактическими данными. Имейте в виду: если среди значений есть дублирующиеся, функция RANK присвоит им одинаковый ранг, а следующие ранги будут пропущены (например, если два элемента делят второе место, следующий получит четвёртый ранг).
Обратное ранжирование особенно ценно, когда требуется выделить наименьшие значения или самые короткие временные интервалы, и идеально подходит для наборов данных, где совпадения допустимы или даже ожидаемы.
Код VBA: автоматическое присвоение обратных рангов
Для больших наборов данных или ситуаций, когда ваши данные часто обновляются и требуется более автоматизированное решение, используйте код VBA — он позволяет быстро и эффективно присваивать обратные ранги. Этот метод идеально подходит пользователям, знакомым с основами программирования и стремящимся избавиться от рутинных ручных операций.
1. Откройте редактор VBA, выбрав Инструменты разработчика > Visual Basic. В окне Visual Basic for Applications выберите Вставка > Модуль и вставьте следующий код в область модуля:
Sub AssignReverseRank()
Dim dataRange As Range
Dim outputRange As Range
Dim i As Long
Dim j As Long
Dim temp As Variant
Dim arr As Variant
Dim sortedArr As Variant
Dim rankArr() As Long
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set dataRange = Application.InputBox("Select the data range to rank (single column):", xTitleId, "", Type:=8)
If dataRange Is Nothing Then Exit Sub
Set outputRange = Application.InputBox("Select the first cell for output ranks:", xTitleId, "", Type:=8)
If outputRange Is Nothing Then Exit Sub
arr = dataRange.Value
ReDim rankArr(1 To UBound(arr, 1), 1 To 1)
sortedArr = arr
' Sort the array in ascending order
For i = 1 To UBound(sortedArr, 1) - 1
For j = i + 1 To UBound(sortedArr, 1)
If sortedArr(i, 1) > sortedArr(j, 1) Then
temp = sortedArr(i, 1)
sortedArr(i, 1) = sortedArr(j, 1)
sortedArr(j, 1) = temp
End If
Next j
Next i
' Assign reverse ranks
For i = 1 To UBound(arr, 1)
For j = 1 To UBound(sortedArr, 1)
If arr(i, 1) = sortedArr(j, 1) Then
rankArr(i, 1) = j
Exit For
End If
Next j
Next i
outputRange.Resize(UBound(rankArr, 1), 1).Value = rankArr
End Sub 2. Чтобы запустить макрос, нажмите кнопку
«Выполнить» или клавишу F5. Вам предложат выбрать диапазон данных (укажите один столбец, который нужно ранжировать в обратном порядке), а затем — первую ячейку для вывода результатов ранжирования. После каждого выбора нажмите «ОК».
Этот макрос сортирует ваши данные по возрастанию и корректно присваивает обратные ранги, начиная с ранга 1 для наименьшего значения. Он особенно полезен для одновременного ранжирования тысяч записей или автоматизации ранжирования в отчётах, которые регулярно обновляются.
Перед использованием этого макроса убедитесь, что ваши данные непрерывны и содержат исключительно числовые значения. Наличие нечисловых или пустых ячеек может привести к ошибкам в результатах, поэтому рекомендуется заранее очистить данные. Кроме того, всегда сохраняйте книгу перед запуском макросов — это защитит вас от непреднамеренных изменений.
Лучшие инструменты повышения продуктивности в Office
Раскройте весь потенциал 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 и PowerPoint + Office Tab Pro
- Один установщик, одна лицензия— настройка занимает считанные минуты (готово для MSI)
- Лучше работать вместе— оптимизированная продуктивность во всех приложениях Office
- 30-дневная полнофункциональная пробная версия— без регистрации и кредитной карты
- Лучшее соотношение цены и качества— экономия по сравнению с покупкой отдельных надстроек