Chapter 7. 函式 (二):查詢與篩選7.6 篩選函式:UNIQUE / SORT / SORTN

7.6 篩選函式:UNIQUE / SORT / SORTN


若想要對資料進行移除重複資料或排序資料時,可以使用第 3.4 節之方式完成,但如果不想動到原始資料,而是另一個地方進行移除重複資料或排序時,可以使用 UNIQUE / SORT / SORTN 這三個函式完成,函式說明如下:

  • UNIQUE:取得不重複的列 / 欄:

語法

UNIQUE (範圍, [根據欄], [只出現一次])

輸入

  • 範圍:要篩選的資料範圍。
  • 根據欄:TRUE / FALSE,是否以欄做為篩選依據,預設為 FALSE (即用列篩選)。
  • 只出現一次:TRUE / FALSE,是否只傳回沒有重複項目的值,預設為 FALSE。例如有一筆資料出現兩次以上,則輸出時不會輸出此筆資料。

輸出

範圍 中的不重複資料列 / 欄,會根據第一次出現的順序排序。

  • SORT / SORTN:排序所選範圍:

語法

  • SORT (範圍, [排序欄_1, 遞增_1], [排序欄_2, 遞增_2,...])
  • SORTN (範圍, [n], [顯示所有和局], [排序欄_1, 遞增_1], [排序欄_2, 遞增_2,...])

輸入

  • 範圍:要排序的資料範圍。
  • n:只輸出前 n 個值,必須大於 0,預設為 1。
  • 顯示所有和局:遇到一樣順位時的輸出方式,有 0 / 1 / 2 / 3 四種,預設為 0,意義分別如下:
    • 0:顯示前 n 列。
    • 1:如果有與第 n 列重複的值,則一起顯示。
    • 2:先將 範圍 有重複的值刪除,再顯示前 n 列。
    • 3:篩選前 n 個不重複的 範圍,再顯示其所有重複的值。
  • 排序欄_n:要根據哪個欄位進行排序,最左邊是 1,以此類推。若有多個排序條件,須與 遞增_n 成對
  • 遞增_n:TRUE / FALSE,分別為遞增、遞減排序。

輸出

範圍 根據 排序欄_n 進行 遞增_n 排序的結果,SORTN 則顯示前 n 個值。

以下使用第 1 章的會員資料檔並搭配五個範例說明各函式的用法:

  1. 取得不重複的婚姻狀態

    公式

    =UNIQUE(婚姻狀態)

    解說

    會輸出婚姻狀態、已婚、未婚三種,若將 只出現一次 設為 TRUE,即 =UNIQUE(婚姻狀態,,TRUE),則會刪除所有有重複出現過的資料,只會出現表頭 (婚姻狀態) 一列。

  2. 取得不重複的婚姻狀態與性別

    公式

    =UNIQUE({婚姻狀態,性別})

    解說

    • 在此使用陣列自由連接想要輸出的欄位,前提是各欄位列數必須相同。
    • 若 UNIQUE 要篩選的資料範圍有多欄,會篩選所有資料都不重複的列,因此前者會輸出表頭、2 種婚姻狀態 × 2 種性別五列。若將 只出現一次 設為 TRUE,即 =UNIQUE({婚姻狀態,性別},,TRUE) 則只會輸出表頭。
  3. 取得所有不重複的家庭月收入選項,並將其遞減排序

    公式

    • =UNIQUE(SORT(家庭月收入,家庭月收入,FALSE))
    • =SORT(UNIQUE(家庭月收入),UNIQUE(家庭月收入),FALSE)

    解說

    篩選函式之間可以一起使用,在此提供兩種做法:

    • 先將所有 家庭月收入 排序,再使用 UNIQUE 移除重複項目。
    • 將先篩選出不重複的 家庭月收入,再根據字串進行排序,但此方式需要用到兩次 UNIQUE(家庭月收入)。
  4. 將資料以生日遞減排序,並顯示前 5 筆資料的所有欄位

    公式

    =SORTN(會員資料,5,,2,FALSE)

    解說

    • 在此已知生日在第 2 欄,可使用 MATCH 尋找生日在表頭的位置替換。
    • TRUE / FALSE 可代換成 1 / 0。
  5. 顯示前三筆會員編號、婚姻、性別,其排序依據為婚姻、性別,皆為遞增排序

    公式

    =SORTN({會員卡號,婚姻狀態,性別},3,X,2,0,3,0)

    解說

    其中 X (顯示所有和局) 選擇 0~3 會有不一樣的結果,如完成檔案所示,說明分別如下:

    • X = 0:直接選擇前三筆資料。
    • X = 1:原本的第三筆資料為未婚 + 男,因此會輸出所有未婚 + 男的資料。
    • X = 2:會篩選不重複的婚姻狀態 + 性別,會篩選未婚 + 男、未婚 + 女、已婚 + 男的資料,並輸出這三種類別的第一筆資料。
    • X = 3:會輸出未婚 + 男、未婚 + 女、已婚 + 男的所有資料。

    本節的函式非常適合用於儲存格有多列且有可能重複的輸出時,而下一節將介紹篩選器函式 FILTER 的用法,其可以在不動到原始資料的情況下完成想要的篩選與排序,更能完成一些使用 SUMIFS 等函式無法達成的計算。