免費軟體與線上工具1,417影音、圖片與 PDF9153C 開箱評測895生活、旅遊與遊戲798iPhone 與 Mac549LINE 與社群533Google 服務468Office 教學462Windows 與電腦457Android 手機402網路新知374AI 工具132
Office 教學

Excel SORTBY 函數教學:依據其他欄位多條件排序資料

SORTBY 函數能根據一個或多個其他範圍的值對資料進行排序。它允許使用不在輸出範圍內的資料作為排序依據,非常適合處理多條件排序的情境。

Excel SORTBY 函數語法

=SORTBY(陣列, 排序依據陣列1, [排序順序1], [排序依據陣列2], [排序順序2], ...)
參數必填說明
陣列是要進行排序的資料範圍或陣列。
排序依據陣列1是用來決定排序順序的第一個資料範圍或陣列,其列數或欄數必須與「陣列」相同。
排序順序1選填指定排序方式。1 為遞增(預設值),-1 為遞減。
排序依據陣列2選填用來決定排序順序的第二個資料範圍或陣列。
排序順序2選填指定第二個排序依據的排序方式。1 為遞增,-1 為遞減。

回傳:排序後的陣列。

適用版本:Microsoft 365、Excel 2021 以上版本支援。

SORTBY 函數範例

範例 1:單一條件排序

根據業績高低對員工資料進行遞減排序

姓名部門業績
陳怡君業務一課150000
林冠宇業務二課200000
張雅婷業務一課120000
王小明業務二課180000

在 E2 輸入公式:

=SORTBY(A2:C5, C2:C5, -1)

結果:林冠宇。根據 C 欄的業績進行遞減排序(-1)。公式會溢出至 E2:G5,E2 儲存格顯示業績最高的林冠宇。

範例 2:多條件排序

先按部門遞增排序,再按業績遞減排序

姓名部門業績
陳怡君業務一課150000
林冠宇業務二課200000
張雅婷業務一課120000
王小明業務二課180000

在 E2 輸入公式:

=SORTBY(A2:C5, B2:B5, 1, C2:C5, -1)

結果:陳怡君。先依 B 欄部門遞增排序,再依 C 欄業績遞減排序。公式會溢出至 E2:G5,E2 顯示業務一課業績最高的陳怡君。

範例 3:排序依據不在輸出範圍內

只輸出姓名,但根據總分高低進行遞減排序

姓名國文數學總分
陳怡君8590175
林冠宇7080150
張雅婷9588183
王小明8075155

在 F2 輸入公式:

=SORTBY(A2:A5, D2:D5, -1)

結果:張雅婷。只輸出 A 欄的姓名,但根據 D 欄的總分進行遞減排序。公式會溢出至 F2:F5,F2 顯示總分最高的張雅婷。

使用 SORTBY 的技巧與注意事項

  • SORTBY 函數不會改變原始資料的順序,而是將排序結果輸出到新的範圍。
  • 與 SORT 函數不同,SORTBY 可以使用不在輸出範圍內的資料欄位作為排序依據。
  • 如果需要動態排序,可以結合 FILTER 函數,先篩選資料再進行排序。

SORTBY 常見錯誤與解決方法

錯誤原因解決方法
#VALUE!「排序依據陣列」的列數或欄數與要排序的「陣列」大小不一致。檢查所有排序依據範圍,確保它們的維度(列數或欄數)與主陣列完全相同。
#SPILL!公式預期輸出的範圍內有其他資料,導致排序結果無法完整顯示。清除溢出範圍內的資料,讓公式有足夠的空白儲存格可以顯示完整的陣列結果。

Google 試算表可以用 SORTBY 嗎?

Google 試算表完全支援 SORTBY 函數,語法與功能與 Excel 一致。

下載 SORTBY 範例檔

上面的範例都整理在這個檔案裡,每個範例一個工作表,黃色格子是公式,可以直接改資料看結果變化:SORTBY 範例.xlsx(範例公式的結果經過兩個模型交叉核對)。

常見問題

SORT 和 SORTBY 函數有什麼不同?

SORT 是指定陣列內的欄號或列號來排序,而 SORTBY 是直接指定另一個範圍作為排序依據。因此,SORTBY 可以使用不在輸出結果中的資料來進行排序。

SORTBY 可以自訂排序順序嗎?

可以,但需要搭配 MATCH 或 XMATCH 函數,將自訂名單轉換為數字順序後,再將該數字陣列作為 SORTBY 的排序依據陣列。

為什麼輸入公式後出現 #SPILL! 錯誤?

這是因為 SORTBY 會將結果展開到多個儲存格,如果展開的範圍內已經有其他資料,就會發生溢出錯誤。清空該範圍的儲存格即可解決。

相關函數

這篇收錄在「Excel 函數字典」。