Skip to main content

Kutools for Office — 一套工具,五種功能。完成更多工作。

如何在 Excel 中以相反的順序對數據進行排名?

Author Sun Last modified

在 Excel 中,使用常見的 =RANK(單元格, 範圍) 公式會根據最大值獲取排名為 1,而最小值則被分配到最低的排名數字。然而,在某些情況下,您可能需要反轉此邏輯,讓最小值獲得最高等級,而最大值獲得最低等級,如下方截圖所示。這在分析較低值代表較佳表現的數據時特別有用,例如比賽時間、成本或錯誤次數等數據。
A screenshot showing data ranked in reverse order in Excel

反向排序數據 | VBA 代碼:自動分配反向排名


反向排序數據

要在 Excel 中執行反向排名,您可以通過指定額外的參數來稍微修改標準的 RANK 公式。這種方法可以讓您輕鬆地從小到大對數據進行排名,而不是默認的順序。

選擇一個空白單元格作為反向排名結果出現的位置。假設您的數據範圍在 B2 到 B10 的單元格中,請在與數據相鄰的第一個單元格(例如 C2)中輸入以下公式:

=RANK(B2,$B$2:$B$10,1)

輸入公式後,按 Enter鍵。要將該公式應用於列中的其他單元格,請使用填充柄:將鼠標移到輸入公式的單元格(C2)右下角,當光標變為加號時,向下拖動以填滿數據旁邊剩餘的單元格範圍(在此例中為 C10)。 
A screenshot of reverse rank formula applied in Excel

如果您的數據範圍不同,只需調整公式中的單元格引用以匹配實際數據。請記住,如果您有重複值,RANK 函數將為這些值分配相同的排名,並跳過後續的排名(例如,如果有兩個項目並列第二,則下一個排名將是四)。

當您希望突出顯示最低值或最快時間時,反向排名尤其有用,並且它在允許或預期平局的數據集上運行良好。


VBA 代碼:自動分配反向排名

對於大型數據集或數據頻繁更新且需要更自動化解決方案的情況,您可以使用 VBA 代碼快速高效地分配反向排名。此方法非常適合熟悉少量編程並希望消除重複手動步驟的用戶。

1. 點擊開發工具 > Visual Basic 打開 VBA 編輯器。在 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. 要運行宏,點擊 Run button 運行 按鈕或按 F5. 您將被提示選擇數據範圍(選擇您想要反向排名的單一列),然後選擇您希望輸出排名結果的第一個單元格。每次選擇後點擊 確定。

這個宏會按照升序排列您的數據,並相應地分配反向排名,將最小值設置為排名 1。對於一次對數千條記錄進行排名或自動化定期刷新的報告中的排名操作來說,這個方法特別有用。

使用此宏時,請確保您的數據是連續的,並且僅包含數值。任何非數值或空單元格都可能導致輸出不正確,因此最好先清理數據。此外,運行宏之前保存工作簿是一個良好的預防措施,可防止意外更改。


最佳 Office 生產力工具

🤖 Kutools AI 助手:以智能執行為基礎,革新數據分析 生成程式碼 創建自訂公式 分析數據並生成圖表 調用 Kutools 增強函數
熱門功能查找、選取項目的背景色或標記重複值刪除空行合併列或單元格且不遺失數據四捨五入(免公式)...
高級 LOOKUP多條件 VLookup多值 VLookup多表查找模糊查找...
高級下拉列表快速創建下拉列表 依賴型下拉列表 多選下拉列表...
列管理器添加指定數量的列移動列切換隱藏列的顯示狀態比較區域及列...
精選功能網格聚焦 設計檢視 增強編輯欄 工作簿及工作表管理器 資源庫(快捷文本) 日期提取器 合併資料 加密/解密儲存格 按列表發送電子郵件 超級篩選 特殊篩選(篩選粗體/傾斜/刪除線...)...
15 大工具集12 項文本工具添加文本刪除特定字符…)50+ 儀表 類型甘特圖等)40+ 實用 公式基於生日計算年齡等)19 項插入工具插入QR码根據路徑插入圖片等)12 項轉換工具金額轉大寫匯率轉換等)7 項合併與分割工具高級合併行分割儲存格等)...及更多
使用 Kutools,語言任你選 — 支援英語、西班牙語、德語、法語、中文及超過40 種語言!

運用 Kutools for Excel,全面提升您的 Excel 技能,體驗前所未有的高效。 Kutools for Excel 提供超過300 項進階功能,讓您提升工作效率、節省時間。 點此尋找您最需要的功能...


Office Tab 為 Office 帶來分頁介面,讓您的工作更加輕鬆簡單

  • 在 Word、Excel、PowerPoint 中啟用分頁編輯與閱讀
  • 在同一視窗的新分頁中打開與創建多份文件,而非開啟新視窗。
  • 提升您的生產力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 天全功能試用 — 無需註冊、無需信用卡
  • 最超值 — 一次購買,節省單獨外掛費用