Skip to content

合作邀約 email: dr.fish@drfishstats.com

  • Facebook
  • X
site icon of Dr. Fish

Dr. Fish 漫游社會統計

魚博士的專業漫談和課後隨筆

  • Home
  • 關於 Dr. Fish
  • 統計基礎
    • 入門概念
    • 圖形繪製
    • 描述統計
    • 相關
    • 線性迴歸
  • 統計進階
    • 推論統計
    • 統計檢定
      • 相關係數
      • 迴歸
      • 平均數比較
      • 無母數檢定
  • EXCEL 系列
    • 資料管理
    • 圖形繪製
    • 描述統計
    • 推論統計
  • 下課後
    • 生活
    • 旅遊
      • 日本
    • 美食
    • 攝影
  • 聯絡 Dr. Fish
  • Home
  • 資料管理
  • 如何使用 Excel 排序和篩選資料

🐟 請您尊重本網站的智慧財產權,如有任何引用,請註明出處:Dr. Fish 漫游社會統計。(文章發表日期)。文章名稱。文章網址

如何使用 Excel 排序和篩選資料

Posted on 2025-07-302025-07-30 By Dr. Fish
資料管理

微軟的 Excel 是一功能強大的軟體,各種專業領域的使用者都很常利用它來進行資料整理。此外,相較於不容易取得和價格昂貴的專門統計軟體如 SPSS、SAS,相對普及的 Excel 也很常作為資料分析的工具。不論是資料整理或資料分析的過程,都很常遇到資料需要排序或篩選的情況,而這2種操作都可在 Excel 裡簡單地達成。

資料排序和篩選向來可以透過 Excel 圖形化的功能表來進行,但是 Microsoft 365、Excel 2021 和之後的版本建立了排序和篩選的函數,讓使用者能夠選擇圖形化的介面或函數語法來執行資料排序或篩選。本篇文章將介紹這些函數的使用,除了語法的說明,也會舉例示範各個函數的操作方法與函數合併使用的情況,讓您在使用 Excel 之際具有更多的彈性。

  • SORT 函數
  • SORTBY 函數
  • FILTER 函數
  • UNIQUE 函數

SORT 函數

排序功能裡最基本的一個函數為 SORT 函數,可用一個標準或條件來排序一欄、一列或數欄和數列組成的資料。因為這個函數會一次傳回一組數值,也就是一個陣列(array),所以稱為動態陣列公式。這個函數的語法為:

=SORT(array, [sort_index], [sort_order], [by_col])

括號裡為語法的引數(argument),一共有4個,中括號裡的引數為非必要的引數,可選擇性地使用。這4個引數的意義分別如下:

  • array:資料的範圍,可以是一欄、一列或數欄和數列組成的資料。
  • sort_index:作為排序標準或條件的欄或列所在的欄數或列數,預設值為第1欄或第1列。
  • sort_order:排列的順序,數值1為從小至大的排序(預設值),數值-1為從大至小的排序。
  • by_col:排序的方法,邏輯值 FALSE 為按列排序(預設值),邏輯值 TRUE 為按欄排序。

先舉個簡單的例子,假設只有一欄 AGE 的資料,我們想將年齡從小至大排序。找一空白欄,在第1列的儲存格輸入 AGE_SORT 或任何您習慣或喜歡的名稱,然後在這個名稱的下方儲存格(下圖為C2)輸入下面的任一個語法:

① =SORT(A2:A11, 1, 1, FALSE)
② =SORT(A2:A11)

這語法指出資料位在儲存格A2到A11,要求以第1欄為排序標準,把數值從小至大且按列排序。由於這裡只有一欄資料,所以只能以該欄(第1欄)作為排序標準,再加上第3和第4個引數皆為預設值,因此第1個語法可以簡化成第2個語法。不論使用哪一個語法,都可以得到相同的排序。

sorting data of 1 column using SORT function

若想將年齡從大至小排序,而非從小至大排序,只要更改語法裡第3個引數的值至-1即可。不過此時就不能夠把語法簡化成上面的第2個語法,因為排列順序的預設值為從小至大而非從大至小,所以若要讓數值改成從大至小排序,必須在語法裡明確地指出。

sorting data of 1 column in descending order using SORT function

在社會或行為科學的領域裡,當輸入資料至統計分析軟體或 Excel 時,通常都是一欄一個變項、一列為一位研究參與者所有變項資料的方式。不過在 Excel 裡,也容許一列一個變項的輸入方法,若想對此種輸入方法的資料進行排序,只須更改語法裡的第4個引數即可。

例如上面原本在第1欄的年齡資料變成在第1列,此時若想將年齡從小至大進行排序,可以在一空白的儲存格(下圖為B4)輸入下面的語法:

=SORT(B1:K1, 1, 1, TRUE)

這語法指出資料範圍位於儲存格B1到K1,要求以第1列為排序標準,將年齡從小至大且按欄進行排序。由於這裡的資料為一列,也就是一欄一個數值,而為了讓資料「按欄」排序,須將語法裡的第4個引數改成 TRUE,才可正確地排序。不過這種資料輸入的方法在社會和行為科學領域並不常見,所以這裡僅作為第4個引數使用時機的示範,下面內容將不再使用這種輸入方法。

sorting data of 1 row using SORT function

進一步來看,除了原本的年齡 AGE 之外,再增加一欄名字 NAME 的資料,讓資料變成2欄。若想讓名字依據年齡大小(從小至大)進行排序,可在下圖的儲存格D2裡輸入下面的語法:

=SORT(A2:B11, 2, 1, FALSE)

這語法指出資料範圍位於儲存格A2到B11,要求以第2欄的年齡 AGE 為排序標準,從年紀最小到最大的順序來排列名字。

sorting data of 2 columns using SORT function

利用相同的方法,即使有更多欄的資料,都可以進行排序。例如下面的資料有3欄,也就是3個變項,若想依據年收入 INCOME 的少至多來排列其他欄的資料,可在一空白的儲存格(下圖為E2)輸入下面的語法:

=SORT(A2:C11, 3, 1, FALSE)

這語法指出資料範圍位於儲存格A2到C11,要求以年收入 INCOME 為排序標準,從年收入最少到最多的順序來排列名字和年齡。

sorting data of 3 columns using SORT function

當資料欄數較多,也就是變項較多時,要知道作為排序標準的變項所在的欄數可能變得困難,此時可用 MATCH 函數來獲得這個變項所在的位置。例如上面的例子裡,儲存格E2的語法可改成:

=SORT(A2:C11, MATCH(“INCOME”, A1:C1, 0), 1, FALSE)

這語法裡的 MATCH 函數會傳回數值3,代表作為排序標準的 INCOME 位於第3欄。利用這樣的語法不用去計算排序標準的變項所在的欄數,但須注意變項名稱必須使用雙引號且正確地寫出。關於 MATCH 函數的詳細說明,可以參考如何使用 Excel 的 INDEX 和 MATCH 函數向左尋找資料。

利用 SORT 函數對資料進行排序雖然很簡單,但只能使用1個排序標準。此外,當新增或減少一整欄的資料時,由於一開始作為排序標準的變項欄數已被變更,所以原本排序好的資料會變得無法正確顯示。例如上面3欄的資料,若刪除年齡那一整欄,原本排序好的資料會傳回 #VALUE! 的錯誤訊息且無法顯示。

sorting results of one column deletion

因此,若想要使用2個或2個以上的排序標準,或是想要新增或減少變項而不會影響已經排序好的資料時,可以改使用更具彈性的 SORTBY 函數,下面介紹這個函數的語法和使用方法。

SORTBY 函數

排序功能裡較進階的一個函數為 SORTBY 函數,這函數和 SORT 函數一樣可用來排序一欄、一列或數欄和數列組成的資料,且同樣會傳回一陣列的數值,也屬於動態陣列公式。不過不同於 SORT 函數,這個函數能夠一次使用2個或2個以上的排序標準,且新增或刪除一整欄的原始資料不會影響已經排序好的資料,因此較 SORT 函數更具彈性。SORTBY 函數的語法為:

=SORTBY(array, by_array1, [sort_order1], [by_array2, sort_order2],…)

語法裡中括號裡的引數並非必要,可選擇性使用。上面語法裡各個引數的意義分別如下:

  • array:欲排序的資料範圍。
  • by_array1:第1個排序標準所在的資料範圍。
  • sort_order1:第1個排序標準的排列順序,數值1為從小至大,數值-1為從大至小。預設值為從小至大的數值1。
  • by_array2:第2個排序標準所在的資料範圍。
  • sort_order2:第2個排序標準的排列順序,數值1為從小至大,數值-1為從大至小。預設值為從小至大的數值1。

從 SORTBY 函數的語法可以發現,這函數的執行須指明至少1個排序標準。舉例來說,上面的名字 NAME 和年齡 AGE 兩欄資料,若以年齡為排序標準,從最小到最大年紀的順序來排列名字,可在下圖的儲存格D2裡輸入下面的語法:

=SORTBY(A2:B11, B2:B11, 1)

這語法指出欲排序的資料位於儲存格A2到B11,要求以位於儲存格B2到B11的年齡為排序標準,從最小到最大年齡的順序來排列名字。下圖右為 SORTBY 函數的傳回結果,和上面利用 SORT 函數所得到的結果是一樣的。

sorting data of 2 columns using SORTBY function

更進一步來看,若有3欄的資料(也就是3個變項),其中有2個排序標準,第1個為城市 CITY 而第2個為年收入 INCOME,想要先依據A到Z的順序排列城市再從高至低排列年收入,可在下圖的儲存格E2裡輸入下面的語法:

=SORTBY(A2:C11, B2:B11, 1, C2:C11, -1)

這語法指出欲排序的資料範圍位在儲存格A2到C11,第1個排序標準位於儲存格B2到B11,第2個排序標準位於儲存格C2到C11,要求第1個排序標準從小至大排列而第2個排序標準從大至小排列。語法輸入完成後,按下 Enter 會傳回如下圖右邊的資料。

sorting data of 3 columns using SORTBY function

從上面的示範過程可以看到,SORTBY 函數可以使用2個或2個以上的排序標準。此外,當新增或刪除一整欄資料的時候,原本已經排序好的資料會自動新增或刪除被更動的那欄資料,其餘資料維持不變。舉例來說,上面使用 SORT 函數來排序年收入 INCOME 的3欄資料,如果改使用 SORTBY 函數也可以得到相同的結果。

data of 3 columns and 1 sorting criteria using SORTBY function

在使用 SORTBY 函數進行排序的情況下,若刪除原始資料的年齡 AGE 那一整欄,原本已經排序好的資料也會自動刪除年齡那一整欄,變成下圖右邊的樣子。這一點和 SORT 函數有很大的不同,凸顯了 SORTBY 函數的彈性較大。

deletion of 1-column raw data after using SORTBY function

雖然 SORTBY 是個很實用的函數,但使用時須注意作為排序標準的資料引數(by_array)必須是一整欄。此外,函數裡的所有引數必須是相同大小,也就是說,每一欄從上到下的儲存格數目都要相同,否則會出現 VALUE! 的錯誤訊息。

FILTER 函數

當進行資料整理的過程中,除了資料排序之外,也很常需要篩選資料,甚或篩選後再排序。若想要依據自訂的標準來執行資料篩選,可以使用 FILTER 函數。這個函數的語法如下:

=FILTER(array, include, [if_empty])

語法裡中括號裡的引數並非必要,可以選擇性地使用。語法裡各個引數的意義如下:

  • array:想要篩選的資料陣列或範圍,能夠是一欄、一列或數欄和數列組成的資料。
  • include:篩選的條件,須以陣列的方式呈現,且陣列的高度或寬度需和想要篩選資料的陣列相同。
  • if_empty:當篩選條件陣列裡不存在篩選值時,系統傳回的訊息。

先舉個簡單的例子來說,假設有名字 NAME、城市 CITY 和年收入 INCOME 三欄的資料,要篩選城市為 Chicago 的所有資料,可在一空白儲存格(下圖為E2)輸入下面的語法:

=FILTER(A2:C11, B2:B11=“Chicago”)

這語法指出被篩選的所有資料位在儲存格A2到C11,篩選條件為儲存格B2到B11裡名稱為 Chicago 的城市,因為是字串,所以須使用雙引號。由於篩選條件的值確實存在,所以沒有使用第3個引數。語法輸入完成後,按下 Enter 會傳回城市為 Chicago 的人名和年收入資料,如下圖右。

one filter criteria using FILTER function

更進一步來看,若篩選條件有2個,且須同時成立,此時可使用乘法運算符號(*)來連結2個條件。舉例來說,上面的例子裡,除了原本城市為 Chicago 的條件外,若要再增加一個年收入大於400,000的條件,可在下圖的儲存格E2裡輸入下面的語法:

=FILTER(A2:C11, (B2:B11=“Chicago”)*(C2:C11>400000), “”)

這語法指出資料範圍位在儲存格A2到C11,第1個篩選條件為儲存格B2到B11裡名稱為 Chicago 的城市,第2個篩選條件為儲存格C2到C11裡大於400,000的年收入,而且這2個條件須同時成立。此外,當篩選條件的資料不存在時,傳回空白的值。語法輸入完成後,按下 Enter 會傳回如下圖右下的資料。

multiple criteria using multiplication operator to filter data of 3 columns

如果2個條件不需要同時成立,而是滿足第1個條件或第2個條件的情況,此時可使用加法符號(+)來連結2個條件。同樣以上面的例子來看,若不只篩選 Chicago 這個城市,也想篩選 Boston 這個城市,可在下圖的儲存格E2輸入下面的語法:

=FILTER(A2:C11, (B2:B11=“Chicago”)+(B2:B11=“Boston”), “”)

這語法指出資料範圍位在儲存格A2到C11,2個篩選條件為儲存格B2到B11裡名稱為 Chicago 或 Boston 的城市,若篩選條件的資料不存在時,傳回空白的值。語法輸入完成後,按下 Enter 會傳回這2個城市的所有相關資料。

multiple criteria using addition operator to filter data of 3 columns

除了單獨使用之外,FILTER 函數也可以和上面介紹的 SORT 函數一起使用。同樣以名字、城市和年收入的資料為例子,如果想先篩選出城市為 Chicago 的資料,再依據年收入的高低進行排序,可在下圖的儲存格E2裡輸入下面的語法:

=SORT(FILTER(A2:C11, B2:B11=“Chicago”, “”), 3, -1, FALSE)

這語法指出從儲存格A2到C11的原始資料先篩選出儲存格B2到B11裡名稱為 Chicago 的城市資料,再以第3欄的年收入為排序標準,依據高年收入到低年收入的順序,按列來排列資料。語法輸入完成後,按下 Enter 後會傳回依據年收入高低排序的 Chicago 城市資料。

sorting filtered data using SORT and FILTER functions

從上面的說明可以發現 FILTER 函數是個很實用的函數,而且和 SORT 函數一同使用會讓資料整理變得更有彈性。使用時須注意篩選條件引數(include)裡若有 #N/A、#VALUE 等錯誤值,FILTER 函數便無法正確地執行。此外,若篩選條件陣列裡有篩選值不存在的可能性時,最好自行設定傳回名稱的引數(if_empty),否則系統會傳回 #CALC! 的錯誤訊息。

UNIQUE 函數

如果想要知道一欄的資料(一個變項)裡存在哪些獨特的值,或想篩選出只出現過一次的值,可以使用 UNIQUE 函數。由於 UNIQUE 函數會傳回一個陣列,所以屬於動態陣列公式。這個函數的語法如下:

=UNIQUE(array, [by_col], [exactly_once])

語法裡除了第1個引數外,其餘皆為選擇性的引數,這3個引數的意義分別如下:

  • array:欲傳回獨特值的資料範圍,可以是一欄、一列或數欄和數列組成的資料。
  • by_col:如何比較的邏輯值,TRUE 為欄和欄的比較,FALSE 為列和列的比較(預設值)。
  • exactly_once:傳回只出現一次的值,為一個邏輯值,TRUE 要求傳回僅出現一次的值,FALSE 要求傳回所有出現過的值(預設值)。

從函數的語法可以看出,若要取得一欄資料的所有出現過的值,只要指明資料的範圍即可。舉例來說,若想知道下圖資料裡所有出現過的城市 CITY 名稱,可在一空白的儲存格(下圖為D2)輸入下面的語法:

=UNIQUE(B2:B11)

這語法指出資料範圍位於儲存格B2到B11,不論出現的次數,要求傳回所有出現過的城市名稱。語法輸入完成後,按下 Enter 會傳回下圖右邊的清單。

unique values of data of 1 column using UNIQUE function

上面的例子僅指出資料的範圍,所以會傳回不論出現次數的所有值,但若只想取得出現一次的值,則可利用第3個引數。同樣使用上面的例子,但想取得只出現一次的城市名稱,可在下圖的儲存格D2裡輸入下面的語法:

=UNIQUE(B2:B11, FALSE, TRUE)

這語法指出資料範圍位在儲存格B2到B11,要求以列和列比較的方式,傳回僅出現一次的城市名稱。語法輸入完成後,按下 Enter 會傳回下圖右邊的清單,可以看到都是只出現過一次的城市。

unique values of exactly once using UNIQUE function

UNIQUE 函數也可以和 SORT 函數一起使用,同樣以上面的城市資料為例,如果想先列出所有出現過的城市名稱再從A至Z排序,可以在下圖的儲存格D2裡輸入下面的任一語法:

① =SORT(UNIQUE(B2:B11), 1, 1, FALSE)
② =SORT(UNIQUE(B2:B11))

第1個語法指出先從儲存格B2到B11列出所有出現過的城市,再依據從小至大(從A至Z)的排序方法來排列這個城市清單。語法輸入完成後,按下 Enter 會傳回下圖右邊的已排序城市清單。

sorting unique data using SORT and UNIQUE functions

在這個例子裡,除了利用 UNIQUE 函數指明的資料範圍外,SORT 函數語法的第2到第4個引數皆為預設值,所以也可直接使用第2個語法,會和第1個語法得到相同的結果。

總結來說,當利用 Excel 進行資料整理的時候,可以使用 SORT、SORTBY、FILTER 或 UNIQUE 函數來排序或篩選資料,讓資料整理的過程更具彈性。不過這幾個函數是內建在 Microsoft 365、Excel 2021 和之後的版本,若是之前的版本,則可透過功能表的圖形化操作介面來完成。

以上為本篇文章對如何使用 Excel 排序和篩選資料的介紹,希望透過本篇文章,您學會了 SORT、SORTBY、FILTER 和 UNIQUE 函數的使用時機和使用方法。若您喜歡本篇文章,請將本網站加入書籤,並隨時回訪本網站喔!另外,也歡迎您追蹤本網站的 Facebook 和/或 X(Twitter)專頁喲!

如果您覺得本篇文章對您有幫助,歡迎買杯珍奶給 Dr. Fish!小小珍奶,大大鼓勵,您的支持將給 Dr. Fish 更多撰寫優質文章的動力喔!

標籤: Excel FILTER函數 MATCH函數 SORTBY函數 SORT函數 UNIQUE函數 動態陣列公式

文章導覽

❮ Previous Post: 如何使用 Excel 取得獨立樣本t檢定的信賴區間
Next Post: 如何使用 Excel 結合不同儲存格的文字 ❯

您可能也會喜歡

featured image of text combination using Excel
如何使用 Excel 結合不同儲存格的文字
featured image of basic math calculations using Excel
如何使用Excel進行數學計算【基礎篇】
featured image of Excel counting functions
如何使用Excel計算數目
featured image of INDEX and MATCH functions
如何使用Excel的INDEX和MATCH函數向左尋找資料

關於 Dr. Fish

profile picture uploaded on July 5, 2024

喜歡求知和分析,所以一路讀到博士。也喜歡旅行、攝影、料理、看日劇,愛把複雜的思想和事物變簡單,是個有點宅也有點跳 TONE 的人。

支持 Dr. Fish

本網站經營和文章撰寫皆由 Dr. Fish 一人完成,投注許多時間和費用。若您喜歡任何一篇文章或覺得文章對您有幫助,請給我一些支持,買杯珍奶給我吧!您的支持不但能給我更多撰寫文章的動力,也可以讓這網站的經營持續下去喔!謝謝!😄

boba-icon
請我喝珍奶!
featured image of spss environment and data entry

下載專區

標準常態分配表

Student's t 分配臨界值表

F分配臨界值表

卡方分配臨界值表

斯皮爾曼等級相關係數臨界值表

Wilcoxon 配對符號等級檢定臨界值表

曼–惠特尼U檢定臨界值表

Student 化全距分配臨界值表

Dunnett 檢定臨界值表(雙尾檢定)

單一樣本z檢定的 SPSS 語法

關於 Dr. Fish 漫游社會統計

本網站使用簡單易懂的文字解說社會統計,並示範軟體操作,同時有課後隨筆的分享,希望讀者在學習之餘,也能感受到生活的樂趣。

網站政策

著作權聲明 Copyright Notice
隱私權政策 Privacy Policy
免責聲明  Disclaimer

追蹤網站

Facebook
X(Twitter)

Copyright © 2021-2025 Dr. Fish 漫游社會統計. All rights reserved.