如何在 Excel 中自動依數值對欄位進行排序?
在 Excel 中處理清單或表格時,通常希望資料始終維持排序狀態,特別是在新增資料時。舉例來說,假設您管理如下圖所示的採購表格,其中商品價格經常更新或新增項目。在此情況下,您可能會發現:當您在輸入新數值後,Excel 並不會自動重新排序價格欄位——資料會保留在原始位置,直到您手動再次排序為止。這很容易造成混淆或錯誤,尤其是在您需要快速分析或呈現始終排序的資訊時。因此,掌握如何在資料變更或新增時立即依數值自動排序欄位,將大幅節省時間並確保工作流程的準確性!
本指南提供實用方法,協助您在更新工作表時自動依數值排序指定欄位。內容涵蓋 VBA 巨集解決方案,以及適用於新版 Excel 的動態陣列公式方案。每種方法均針對特定情境設計,並詳述設定步驟、應用技巧、參數說明與疑難排解,助您順利導入最適合的解決方案。

使用 VBA 自動依數值排序欄位
此 VBA 巨集能在您於工作表中輸入新數值或修改該欄位現有資料時,自動對指定列的所有資料進行排序。若您使用的是較舊版 Excel,或希望表格資料能持續保持原地排序而不需額外欄位,此方法將是理想之選。
此方法適用的典型情境:
- 當您希望表格或欄位中的資料在任何變更後都能立即自動更新排序,無需手動重新排序時。
- 當您在管理多人協作的工作表時,若多位使用者經常更新相同的資料範圍,且畫面需始終維持一致的排序。
開始前須知:
- VBA 解決方案會直接修改您的工作表,建議操作前先儲存檔案。
- 僅在您的 Excel 環境已啟用巨集時,此巨集才能正常運作。
- 巨集會附加至特定工作表,若表格版面有所變動,可能需進行調整。
1. 在工作表標籤列上,以滑鼠右鍵點擊目前的工作表名稱,然後從快捷選單中選擇「檢視程式碼」。
2. 在開啟的「Microsoft Visual Basic for Applications」視窗中,請將下列 VBA 巨集程式碼貼到目標工作表的程式碼視窗內。
VBA:在 Excel 中自動排序欄位
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range("B:B")) Is Nothing Then
Range("B1").Sort Key1:=Range("B2"), _
Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom
End If
End Sub 注意事項:
1) 上述 VBA 程式碼中,"B:B"指的是 B 欄,"B1"是 B 欄第一列的儲存格,而“B2"則位於標題列正下方。您可以調整這些參照,以符合您希望自動排序的資料欄位。
2) 第五行中的參數 Header:=xlYes 表示您的資料區域包含標題列,確保排序時標題不會與資料一同移動。若您的資料區域不含標題,請將此參數改為 Header:=xlNo,並同時將 Key1:=Range("B2") 修改為 Key1:=Range("B1")。
3) 此巨集會在指定欄位的儲存格數值變更時自動觸發。
3. 返回您的工作表。現在,當您在價格欄位中新增數字或更新現有數值時,該欄位會立即依遞增順序重新排序。
提示:請務必在欄位最後一個使用過的儲存格緊接下方輸入新數值。若資料中存在空白儲存格,排序將無法如預期運作。
使用 Excel 公式(動態陣列)自動依數值排序欄位
對於使用 Excel 365 或 Excel 2021 及更新版本的使用者,SORT 與 SORTBY 等動態陣列函數提供了一種高效、無需程式碼的方式,能自動產生已排序清單,並在資料變更時即時更新!此解決方案無需 VBA,由新版 Excel 原生支援,特別適合希望保留原始資料不變,同時在不同範圍或工作表中靈活運用已排序資料副本的情境。
何時適合使用此方法?
- 當您需要在不同位置即時呈現已排序的資料版本(例如用於報表、儀表板或列印),同時保留原始未經處理的資料時。
- 當您在使用 Excel 365、Excel 2021 或更新版本(支援動態陣列功能)時,
- 此方法會在新區域顯示已排序的資料,且不會變動您的原始資料。若您需要直接在原位置重新排序,請考慮上述 VBA 解決方案。
- Excel 2019 或更早版本不支援動態陣列功能。
1. 決定要顯示已排序清單的位置。例如,若您的原始表格位於 A1:C10(標題列在第 1 列),且希望從 E1 儲存格開始顯示已排序清單,請選取 E1. 1. 決定要顯示已排序清單的位置。例如,若您的原始表格位於 A1:C10(標題列在第 1 列),且希望從 E1 儲存格開始顯示已排序清單,請選取 E1.
2. 在 E1 儲存格中輸入下列公式:2. 在 E1 儲存格中輸入下列公式:
=SORT(A2:C10,2,1) 上述公式說明:
- A2:C10 為您原始的資料範圍(不含標題列),請依實際資料區域調整此範圍。
- 2 表示您要依據第二欄排序—例如,若您的價格位於所選區域的第二欄中。
- 1 指定遞增排序。若您希望遞減排序,請使用 -1.
3. 按下Enter ,公式將立即輸出一份動態且已排序的資料副本。當您在原始範圍中新增、刪除或編輯項目(例如新價格或產品)後,已排序清單會即時自動更新——無需手動介入。
注意事項:
- 若在原始區域下方輸入更多資料,公式中的參照(例如 )
A2:C10)必須隨之擴充。 - 針對持續變動的區域,建議使用 Excel 表格(插入 > 表格),並在 SORT 公式中引用表格名稱,以自動更新範圍。
- 若僅使用單一欄位(例如 B2:B10),公式可簡化為
=SORT(B2:B10,1,1)。
示範:在 Excel 中使用 VBA 自動依數值排序欄位
輕鬆依出現頻率在 Excel 中排序
Kutools for Excel 的「高級排序」功能,讓您輕鬆依多種條件(如文字長度、姓氏、絕對值、出現頻率等)對資料進行排序。

Kutools for Excel-透過超過 300 項必備工具全面強化 Excel,讓您的工作更快速、更輕鬆,並運用 AI 功能實現更聰明的資料處理與高效生產力!立即取得
最佳 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 天完整功能試用— 無需註冊,無需信用卡
- 超值之選— 比單獨購買各增益集更省費用