如何在Excel中按值自動排序欄位?
在Excel中處理列表或表格時,通常希望您的資料始終保持排序狀態,特別是在新增資訊時。例如,假設您管理一個如下面截圖所示的採購表,其中物品的價格經常更新或新增項目。在這種情況下,您可能會注意到當您輸入新值時,Excel並不會自動重新排列「價格」欄位——資料會保持在原始位置,直到您再次手動排序。這很容易導致混淆或錯誤,特別是當您需要快速分析或呈現始終排序的資訊時。因此,了解如何在有變更或新增時自動按值排序欄位可以節省大量時間並保持工作流程的準確性。
本指南提供了實用的方法,幫助您在更新工作表時自動按值排序特定欄位。下面,您將找到適用於較新版本Excel的VBA巨集解決方案以及動態公式解決方案。每種方法都適用於特定場景,並提供設置、應用技巧、參數解釋和故障排除的詳細信息,以確保您可以有效地實施最合適的方法。
使用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。
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 助手:以智能執行為基礎,革新數據分析 |生成程式碼 | 創建自訂公式 | 分析數據並生成圖表 | 調用 Kutools 增強函數… |
熱門功能:查找、選取項目的背景色或標記重複值 | 刪除空行 | 合併列或單元格且不遺失數據 | 四捨五入(免公式)... | |
高級 LOOKUP:多條件 VLookup|多值 VLookup|多表查找|模糊查找... | |
高級下拉列表:快速創建下拉列表 |依賴型下拉列表 | 多選下拉列表... | |
列管理器:添加指定數量的列 | 移動列 | 切換隱藏列的顯示狀態 | 比較區域及列... | |
精選功能:網格聚焦 | 設計檢視 | 增強編輯欄 | 工作簿及工作表管理器 | 資源庫(快捷文本) | 日期提取器 | 合併資料 | 加密/解密儲存格 | 按列表發送電子郵件 | 超級篩選 | 特殊篩選(篩選粗體/傾斜/刪除線...)... | |
15 大工具集:12 項文本工具(添加文本、刪除特定字符…)|50+ 儀表 類型(甘特圖等)|40+ 實用 公式(基於生日計算年齡等)|19 項插入工具(插入QR码、根據路徑插入圖片等)|12 項轉換工具(金額轉大寫、匯率轉換等)|7 項合併與分割工具(高級合併行、分割儲存格等)|...及更多 |
運用 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及 PowerPoint 外掛 + Office Tab Pro
- 一鍵安裝,一份授權 — 幾分鐘完成設置(支援 MSI)
- 協同運作更順暢 — Office 應用間無縫提升生產力
- 30 天全功能試用 — 無需註冊、無需信用卡
- 最超值 — 一次購買,節省單獨外掛費用