談談排序(Sort)

iverson3777
·
·
IPFS
·

談完了LOOKUP及FILTER,資料處理另一重要元素就是Sort(排序)了,懂的如何排序資料可以讓呈現的報表更易讓讀者解讀。本篇文章將以某家公司的人資資料(人員代號、姓名、部門及職稱等)來進行說明。

Sort(排序)的順序(Order)分為兩種:Sort A to Z(ascending)及Sort Z to A(descending),數字、文字等資料型態皆可進行排列順序,排序的方式可以為單欄/列陣列(array)的單欄排序或多欄/列陣列(array)的多重排序,以下為人員代號(ID No.)與人員姓名(Name)的單欄資料排序範例圖片:

1.人員代號排序:

Sort A to Z
Sort Z to A

2.人員姓名排序:

Sort A to Z
Sort Z to A

上述例子相信大家都會做,只要在表格(Table)中任一欲排序之欄位,點選首列儲存格(Cell),再點選Filter/Sort(向下箭頭)符號,就可以選擇Sort A to Z或Z to A。


那接下來增加一點難度

挑戰一:如何進行多重欄位排序?
下圖為某公司的人資資料,表格(Table)名稱為HR,請各位先試著想一下,要如何將此資料以Level 1(部門代號Divis. No.) A to Z及Level 2(人員代號ID No.) A to Z的方式進行排序。
PS 以Level來分階層進行排序一開始可能不太好理解,以此挑戰一來講,就是當你完成排序部門代號後,接著排序人員代號時,你一定不希望部門代號的排序被覆蓋掉(打亂掉),所以它會是有一個階層的關係。

想一想



Coffee Time 想

想一想

 

方法一:此方法不受Excel版本限制

  1. 選取HR表格(Table)中任一儲存格後,點選Tab Data(資料),再點選Sort。
  1. 點擊後會跳出一個Sort視窗,此視窗中可讓你增加排序Level、選擇要排序的欄位,以及排序順序(A to Z/ Z to A)。
  1. 將Level 1設定為部門代號,Level 2設定為人員代號,排序順序皆為A to Z,完成後點擊OK即完成資料排序(如下圖)。

方法二:Excel版本2021或365適用

此方法將使用到Excel新的函數Sort(),先介紹一下Sort的參數:

=SORT(array, [sort_Index], [sort_order], [by_col]

array為必要參數,係為你要排序的表格/陣列。

sort_Index為非必要參數,係為你要排序的欄位,預設值為以array中第一個欄位來進行排序。若你僅有一欄要排序,可直接鍵入欄序號即可(如第二欄要排序:2),若為多重排序則需加上括弧,並將欄序號之間以分號區隔(如:{2;5})。

sort_order為非必要參數,係為你要排序的順序,預設值為1(A to Z),另-1為Z to A。若前一項參數sort_Index為多重欄位,則sort_order亦須以括弧+分號的方式輸入(如{1;1})。

by_col為非必要參數,係為你要以欄或列進行排序,預設值為True(以欄Column排序),另False則為以列(Row)進行排序,業界一般習慣以欄進行資料排序。

因為我們只要排序HR表格的第一欄及第二欄,所以公式寫法為=SORT(HR, {1;2}, {1;1}),輸入後即可完成排序,如下圖:

方法二使用Excel新的動態陣列函數(DA),可自動化地進行資料排序,此對於未來資料模型及動態看板的設計上會有很大的幫助呢!


在上述方法說明後,相信大家已經對Sort(排序)有了基本的觀念,那在最後讓我再帶一下資料設計的概念進來。

挑戰二:如果要你以Level 1部門代號及Level 2職位高低來進行多重欄位排序呢?

想一想

如果你的答案是=SORT(HR, {1;4}, {1;1}),那就錯了喔!因為如果直接把職稱進行排序,是無法得到職位階級從高到低的排序,結果只是將職稱字首的英文字母進行排序而已(Engineer -> Manager -> Operator -> Senior Manager -> Vice Manager)。

故在資料設計的時候一定要拋下既有的資料結構框架,去思考如何改善資料結構以獲得你想要的結果。此問題的解答其實很簡單,你只要再增加一個職位名稱與職位階層代號表格供HR資料進行LOOKUP引用,並將HR表格從既有的四欄改為五欄即可(增加Job Title Level欄位)。

然後再利用上述挑戰一的兩個方法進行排序即可完成挑戰二的問題!資料設計是不是很有趣呢,大家也來練習看看吧。

CC BY-NC-ND 2.0 授权

喜欢我的作品吗?别忘了给予支持与赞赏,让我知道在创作的路上有你陪伴,一起延续这份热忱!