在 Excel 中,SORTBY 函數能根據一個或多個「排序依據範圍」來重新排列資料。它不會改變原始資料,而是回傳新的排序陣列,適合用於 依分數排序名單、依日期排序紀錄、依條件排序報表 等情境。
🔹快速摘要(語法、用途、常見場景)
用途:依另一個範圍或欄位的值排序陣列語法:=SORTBY(array, by_array1, [sort_order1], [by_array2], [sort_order2], …)
常見場景:依分數排序名單、依日期排序紀錄、依條件排序報表、多欄排序
一、SORTBY 函數語法與用途
=SORTBY(array, by_array1, [sort_order1], [by_array2], [sort_order2], …)
- array:要排序的陣列或範圍
- by_array1:排序依據的範圍或陣列
- sort_order1(選填):排序方式,1=升冪(預設)、-1=降冪
- by_array2, sort_order2(選填):可指定第二排序依據
回傳結果為依指定範圍排序後的動態陣列。
二、範例教學:五個基礎 + 五個進階範例
🔸基礎範例
範例一:依分數排序名單
=SORTBY(A2:A10,B2:B10,-1)
說明:將 A2:A10 的姓名依 B2:B10 的分數降冪排序。
範例二:依日期排序紀錄
=SORTBY(A2:C10,C2:C10,1)
說明:依 C 欄日期升冪排序整個表格。
範例三:依文字排序
=SORTBY(A2:C10,B2:B10,1)
說明:依 B 欄文字升冪排序。
範例四:依多欄排序
=SORTBY(A2:C10,B2:B10,-1,C2:C10,1)
說明:先依分數降冪,再依日期升冪排序。
範例五:依另一個範圍排序
=SORTBY(A2:A10,D2:D10,1)
說明:將 A 欄名單依 D 欄的值升冪排序。
🔸進階範例
範例六:搭配 FILTER 篩選後排序
=SORTBY(FILTER(A2:C100,B2:B100="有效"),C2:C100,-1)
說明:篩選「有效」資料後,依 C 欄降冪排序。
範例七:搭配 UNIQUE 建立排序名單
=SORTBY(UNIQUE(A2:A100),B2:B100,1)
說明:建立不重複名單並依 B 欄排序。
範例八:依多條件排序報表
=SORTBY(A2:D100,C2:C100,-1,D2:D100,1)
說明:依分數降冪,再依日期升冪排序。
範例九:搭配 SEQUENCE 建立動態索引排序
=INDEX(A2:A10,SORTBY(SEQUENCE(ROWS(A2:A10)),B2:B10,-1))
說明:依分數降冪建立動態索引。
範例十:建立動態報表區塊
=SORTBY(FILTER(A2:D100,C2:C100>50),C2:C100,-1)
說明:篩選分數大於 50 的資料,並依分數降冪排序。
三、常見問題解答(FAQ)
Q1:SORTBY 與 SORT 有何不同?
SORTBY 可依「另一個範圍」排序,SORT 只能依陣列本身排序。
Q2:SORTBY 可以多欄排序嗎?
可以,支援多個 by_array 與 sort_order。
Q3:SORTBY 可以處理文字嗎?
可以,文字會依字母順序排序。
Q4:SORTBY 會改變原始資料嗎?
不會,它只回傳新的排序陣列。
Q5:SORTBY 是否支援橫向排序?
不支援 by_col 參數,僅能依指定範圍排序。
四、注意事項與錯誤排除
- 若 by_array 與 array 列數不一致,會回傳錯誤。
- sort_order 僅支援 1(升冪)與 -1(降冪)。
- 若 array 為空,會回傳空陣列。
- 在舊版 Excel 不支援 SORTBY,僅 Excel 365 可用。
- 多欄排序時,需確保各 by_array 與 array 對應正確。
五、延伸技巧與相關函數
- SORT:單一陣列排序,簡單快速。
- FILTER:搭配 SORTBY 篩選後排序。
- UNIQUE:建立不重複名單並排序。
- SEQUENCE:建立動態索引,控制排序邏輯。
- INDEX:搭配 SORTBY 建立動態查表。
六、結語與延伸閱讀推薦
SORTBY 是 Excel 中比 SORT 更靈活的排序工具,能依不同範圍或欄位排序資料,適合用於報表整理、名單排序與動態分析。若需要更進階的排序邏輯,建議搭配 FILTER、UNIQUE、SEQUENCE 等函數使用。






















