如何在 Excel 中輕鬆排序數值,同時自動跳過空白儲存格?
在 Excel 中處理資料時,經常會遇到包含空白儲存格的清單。若您對這類清單使用標準的 Excel 排序函數(例如 )RANK 或 RANK.EQ),空白儲存格通常會顯示錯誤或不理想的結果,導致資料更難解讀——特別是當您希望空白儲存格保持空白,而非出現錯誤值或被任意排序時。自動跳過空白儲存格並有效排序數值,不僅提升結果的清晰度與可用性,更讓您的試算表顯得專業、易讀!

本文提供逐步說明,教您如何運用公式與 VBA 巨集達成此目標。延伸解決方案更包含參數詳解、實用技巧及疑難排解建議,助您輕鬆避開常見錯誤。
使用公式以遞增順序排序數值,同時跳過空白儲存格
當您需要以遞增順序分配排序值,同時忽略空白儲存格時,常見做法是搭配多個輔助欄位與公式邏輯,確保排序過程自動跳過空值。
適用情境:當您希望產生由低至高的遞增排序,同時保留空儲存格的原始位置時,請使用此方法——特別適用於連續區域,確保遺漏項目不影響排序編號!
若要執行遞增排序並跳過空白儲存格,請依照下列步驟操作,過程中需使用兩個輔助欄位建構結果:
1. 選取緊鄰您數值的空白儲存格——例如,若您的清單從 B2 開始,而資料起始於 A2——然後輸入下列公式:
=IF(ISBLANK($A2),"",VALUE($A2&"."&(ROW()-ROW($B$2)))) 若 A2 為空,公式會傳回空白;否則將根據 A2 的值產生小數數字。當您向下拖曳填滿控點,將公式複製至所有含資料的列時,會依序加上 。0、。1、。2、。3 等。

參數說明與提示:
- $A2:要排序的第一個儲存格。若您的清單起始列不同,請調整此參照。
- $B$2:輸入此公式的儲存格。請留意絕對參照(例如 $A2 與 $B$2),確保公式向下填滿時運作正確。
2. 在下一欄(例如 )C2)輸入下列公式,即可產生已排序的輔助值清單:
=SMALL($B$2:$B$8,ROW()-ROW($C$1)) 當您向下複製公式時,此公式會依序從 B2:B8 中提取最小值、次小值及後續數值。(注意:若您的資料範圍更大,請調整此範圍。)

參數說明:
- $B$2:$B$8:套用前一個(第一個)輔助公式的範圍。
- $C$1:輸入公式所在位置正上方的儲存格;此偏移量用於控制排序順序。
3. 在儲存格 D2 輸入下列公式,即可分配排序值,並讓空白儲存格保持為空:
=IFERROR(MATCH($B2,$C$2:$C$8,0),"") 此公式會比對 B2 中的值與 C2:C8 內的排序結果。若相符,即輸出對應的排序值;若不相符(例如遇到空白儲存格),則不顯示任何內容,維持空白外觀。請向下拖曳填滿控點,立即套用至所有相關列!

參數:
- $B2:包含用於排序的輔助值儲存格。
- $C$2:$C$8:已排序輔助值的範圍。
注意事項:若新增或刪除資料,請務必更新每個公式中的所有範圍,確保與新資料大小一致。針對大型清單,建議使用動態範圍或 Excel 表格,輕鬆減少手動調整範圍的繁瑣作業!
疑難排解:若排序值遺漏或錯位,請確認所有輔助公式範圍皆正確對齊。欄位間一旦錯位,將導致排序錯誤或出現非預期的錯誤訊息。
使用公式以遞減順序排序數值,同時跳過空白儲存格
當您希望以遞減順序分配排序值(最高值取得排序 1)時,有個更快速的方法,只需使用單一公式即可。此方法特別適用於測驗分數、銷售目標等資料集——其中空白儲存格代表遺漏或不可用的資訊,而您不希望這些儲存格佔據排序位置或顯示錯誤。
選取與第一筆資料位於同一列的儲存格(即您希望顯示結果的位置),然後輸入:
=IF(ISNA(RANK(A2,A$2:A$8)),"",RANK(A2,A$2:A$8)) 輸入公式後,使用填滿控點將公式向下複製至資料旁。此公式會檢查 RANK 函數是否傳回錯誤(例如當 )A2 為空白時);若是,則結果留空,避免顯示「#N/A」。若儲存格包含有效數值,即顯示對應的排序值。

參數:
- A2:要排序的儲存格(請根據您的資料範圍調整)。
- A$2:A$8:完整的資料範圍(複製時請使用絕對參照)。
錯誤提醒:若您仍看到「#N/A」錯誤,請再次確認公式所參照的範圍是否符合您預期的數據區域,且被排序的儲存格中不含非數值資料。
使用 VBA 排序數值,同時跳過空白儲存格
對於熟悉巨集並希望自動化排序(無論遞增或遞減)的使用者來說,自訂 VBA 巨集能大幅簡化操作流程,無需建立多個輔助欄位或持續維護公式。
使用方法:
1. 前往開發人員索引標籤,按一下 Visual Basic,即可開啟 Microsoft Visual Basic for Applications 編輯器。若未顯示「開發人員」索引標籤,請參閱此指南:在 Excel 中顯示開發人員索引標籤。
2. 在新的 Microsoft Visual Basic for Applications 視窗中,點選插入 > 模組,並將下列任一程式碼貼到模組視窗中:
- 若要執行遞增排序並跳過空白儲存格:
Sub RankSkipBlank_Ascending() Dim WorkRng As Range Dim Cell As Range Dim NumArr() As Double Dim Ws As Worksheet Dim OutputCell As Range Dim i As Long, j As Long On Error Resume Next xTitleId = "KutoolsforExcel" Set WorkRng = Application.Selection Set WorkRng = Application.InputBox("Please select the range to rank", xTitleId, WorkRng.Address, Type:=8) Set Ws = WorkRng.Worksheet Set OutputCell = Application.InputBox("Please select the first cell to output the ascending ranking", xTitleId, Type:=8) If OutputCell Is Nothing Then Exit Sub j = 0 ReDim NumArr(1 To WorkRng.Rows.Count) For Each Cell In WorkRng If IsNumeric(Cell.Value) And Not IsEmpty(Cell.Value) Then j = j + 1 NumArr(j) = Cell.Value End If Next Cell Dim temp As Double Dim k As Long For i = 1 To j - 1 For k = i + 1 To j If NumArr(i) > NumArr(k) Then ' ← CHANGE HERE temp = NumArr(i) NumArr(i) = NumArr(k) NumArr(k) = temp End If Next k Next i Dim RankArr() As Double ReDim RankArr(1 To j) For i = 1 To j RankArr(i) = NumArr(i) Next i Dim RankValue As Long Dim r As Long: r = 0 For Each Cell In WorkRng r = r + 1 If IsNumeric(Cell.Value) And Not IsEmpty(Cell.Value) Then RankValue = 0 For k = 1 To j If Cell.Value = RankArr(k) Then RankValue = k ' 1 = smallest Exit For End If Next k OutputCell.Offset(r - 1, 0).Value = RankValue Else OutputCell.Offset(r - 1, 0).Value = "" End If Next Cell End Sub - 若要執行遞減排序並跳過空白儲存格:
Sub RankSkipBlank_Descending() Dim WorkRng As Range Dim Cell As Range Dim NumArr() As Double Dim Ws As Worksheet Dim OutputCell As Range Dim i As Long, j As Long On Error Resume Next xTitleId = "KutoolsforExcel" Set WorkRng = Application.Selection Set WorkRng = Application.InputBox("Please select the range to rank", xTitleId, WorkRng.Address, Type:=8) Set Ws = WorkRng.Worksheet Set OutputCell = Application.InputBox("Please select the first cell to output the descending ranking", xTitleId, Type:=8) If OutputCell Is Nothing Then Exit Sub j = 0 ReDim NumArr(1 To WorkRng.Rows.Count) For Each Cell In WorkRng If IsNumeric(Cell.Value) And Not IsEmpty(Cell.Value) Then j = j + 1 NumArr(j) = Cell.Value End If Next Cell Dim temp As Double Dim k As Long For i = 1 To j - 1 For k = i + 1 To j If NumArr(i) < NumArr(k) Then temp = NumArr(i) NumArr(i) = NumArr(k) NumArr(k) = temp End If Next k Next i Dim RankArr() As Double ReDim RankArr(1 To j) For i = 1 To j RankArr(i) = NumArr(i) Next i Dim RankValue As Long Dim r As Long: r = 0 For Each Cell In WorkRng r = r + 1 If IsNumeric(Cell.Value) And Not IsEmpty(Cell.Value) Then RankValue = 0 For k = 1 To j If Cell.Value = RankArr(k) Then RankValue = k Exit For End If Next k OutputCell.Offset(r - 1, 0).Value = RankValue Else OutputCell.Offset(r - 1, 0).Value = "" End If Next Cell End Sub
3. 按下 F5 以執行巨集。系統將彈出對話方塊,提示您選取要排序的範圍;接著,另一個對話方塊會要求您指定排序結果的起始儲存格。巨集會從您選定的儲存格開始輸出排序值,而來源區域中的空白儲存格將維持空白。
提示:
- 若毫無反應,請確認巨集已啟用,且您擁有在活頁簿中執行程式碼的權限。
- 執行 VBA 巨集將無法復原,務必在執行前先複製或備份您的資料。
最佳 Office 生產力工具
| 🤖 | KUTOOLS AI 助手:基於以下內容徹底革新數據分析:智慧執行 | 產生程式碼| 建立自訂公式 | 分析資料並產生圖表| 呼叫增強函數…… |
| 熱門功能:尋找、醒目提示或標記重複值 | 刪除空白行 | 合併列或儲存格而不遺失資料 | 不使用公式的四捨五入…… | |
| 高級 LOOKUP:多重條件 VLookup | 多重數值 VLookup | 跨多個工作表 VLookup | 模糊查找…… | |
| 高級下拉列表:快速建立下拉式清單 | 相依式下拉式清單 | 多選下拉式清單…… | |
| 欄位管理員:新增指定數量的欄位|移動欄位|切換隱藏欄位的可見狀態|比較範圍與欄位…… | |
| 精選功能:網格聚焦 | 設計視圖 |增強編輯欄 | 工作簿與工作表管理員 | 資源庫(自動文字)| 日期提取 | 合併工作表 | 加密/解密儲存格 | 依清單傳送電子郵件 | 超級篩選 | 特殊篩選(篩選粗體儲存格/斜體/刪除線……) ...... | |
| 頂尖 15 工具組:12 文字工具(添加文本,刪除特定字符,……)| 50+ 圖表 類型(甘特圖,……)| 40+ 實用公式(基於生日計算年齡,……)| 19 插入工具(插入二維碼,從路徑插入圖片,……)| 12 轉換工具(金額轉大寫,匯率轉換,……)| 7 合併和拆分工具(高級合併行,分割儲存格,……)|……以及更多 |
運用 Kutools for Excel 強化您的 Excel 技能,體驗前所未有的高效能!Kutools for Excel 提供超過 300 項進階功能,大幅提升生產力並節省寶貴時間。立即點擊,取得您最需要的功能……
Office Tab 為 Office 帶來分頁式介面,讓您的工作更輕鬆自在!
- 在 Word、Excel、PowerPoint 中啟用分頁式編輯與閱讀功能,以及 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 天完整功能試用— 無需註冊,無需信用卡
- 超值之選— 比單獨購買各增益集更省費用