Skip to main content

Excel 排序:按文字、日期、數字或顏色排序數據

Author: Xiaoyang Last Modified: 2025-05-15

在 Excel 中排序數據是一項常見且簡單的任務,這可以根據您選擇的排序類型重新排列數據。通常,使用內建的排序功能,您可以對一個或多個列中的數字、字串、日期和時間進行排序;您還可以根據您創建的自訂列表或單元格格式(例如字體顏色、背景色或圖標)快速輕鬆地排序數據。

除了這些簡單的排序之外,您在日常工作中可能需要更多有用且複雜的排序。本教程將介紹一些不同類型的排序,以解決您在 Excel 中的問題。

目錄:

1. 在 Excel 中存取排序選項

2. 排序的基本用法

3. 排序的高級用法

4. 當輸入或更改數據時自動排序數據

5.其他排序情況


在 Excel 中訪問排序選項

Excel 提供多種方式來訪問排序功能及其選項。

1.1 功能區中的排序按鈕

最快速的方式來應用排序功能是使用功能區中的排序按鈕。

點擊包含要排序值的列中的任意單元格,然後點擊數據選項卡,在排序和篩選部分,點擊升序降序按鈕以按字母順序升序或降序排序數據。請參見截圖:

A screenshot of the Sort A to Z and Sort Z to A buttons in the Sort & Filter group of Excel's Data tab

備註:如果資料區域中有空白行,應用這些按鈕後,只有選取單元格的資料區域在空白行上方或下方才能排序完成。


1.2 排序對話框

資料選項卡的排序及篩選群組中,有另一個排序按鈕,請參見截圖:

A screenshot of the Sort button in the Sort & Filter group of Excel's Data tab

點擊此排序按鈕後,將彈出一個排序對話框,如下圖所示:

A screenshot of the Sort dialog box in Excel with options for sorting by column, sort on, and order

然後,在排序對話框中,您可以根據需要選擇相應的規則來排序數據。

提示:您也可以使用快捷鍵來開啟此排序對話框,請在鍵盤上連續按下 Alt + A + S + S 鍵。


1.3 篩選選單中的排序選項

如果您已在資料區域中應用篩選,您也可以在篩選選項中找到排序選項。點擊任何列中的篩選圖標,您可以在展開的列表中看到排序選項,如下圖所示:

A screenshot showing the sorting options in the Filter menu in Excel

備註:這些排序選項會根據列中的數據而改變:如果列中有文字,則顯示升序排序降序排序;如果列中有數字,則顯示小到大排序大到小排序;如果列中有日期,則顯示從最早到最新排序從最新到最早排序


1.4右鍵排序選項

在 Excel 中,您也可以使用右鍵選單中的排序選項來快速輕鬆地排序數據。右鍵點擊要排序的列中的任意單元格,在上下文選單中,您可以看到有六個可用的排序選項,請選擇您需要的選項,請參見截圖:

A screenshot of the right-click context menu in Excel showing six sorting options


排序的基本用法

此 Excel 排序功能可以幫助您進行一些簡單的排序,例如按升序或降序排序數字、文字字串、日期,或根據字體或背景色排序單元格。本節將介紹此排序功能的一些基本用法。


2.1 根據文字、數字或日期排序數據

要根據文字、數字或日期以升序或降序排序資料區域,請按照以下步驟操作:

1. 選擇您要排序的資料區域,然後點擊 數據 > 排序,請參閱截圖:

A screenshot of the Sort button in the Sort & Filter group of Excel's Data tab

2. 在排序對話框中,執行以下操作:

  • 區域中,選擇您要排序的列名稱;
  • 排序依據部分,選擇選項;
  • 排序部分中,指定排序順序。(要排序文字字串,請選擇升序降序;要排序數字列表,選擇小到大大到小;要排序日期單元格,選擇最早到最新最新到最早。)
  • 提示:如果您的數據包含標題,請確保已勾選“數據包含標題”選項。如果您的數據沒有標題,請取消勾選此選項。

A screenshot of the Sort dialog box in Excel with options for sorting data by column, values, and order

3. 然後,點擊 OK 按鈕,選擇的數據將立即根據您指定的列進行排序。


2.2 根據單元格顏色、字體顏色、單元格圖標排序數據

如果您想根據單元格顏色、字體顏色或使用條件格式的圖示來排序資料區域,排序功能可以快速解決這項任務。

假設您有一個以單元格顏色格式化的資料區域,如下圖所示,如果您需要根據單元格顏色重新排列資料,例如,您希望將淺紅色行放在最上面,接著是淺黃色和淺藍色行,請按照以下步驟根據單元格顏色排序行:

A screenshot of an Excel table formatted with different cell colors for sorting purposes

1. 選擇您想要根據單元格顏色排序的資料區域,然後點擊數據 > 排序以進入排序對話框。

2. 在排序對話框中,指定以下操作:

2.1) 將第一個單元格的顏色設置在頂部,如下所示:

  • 部分,選擇名稱或其他包含彩色單元格的列。在此示例中,我在所有列中都有彩色單元格,您可以選擇任何列名稱;
  • 排序依據部分,請選擇顏色選項;
  • 排序依據部分,選擇一個您想要放在頂部或底部的單元格顏色;

2.2) 然後,點擊新增條件按鈕以添加第二個及其他規則級別,重複上述步驟以設定第二個及其他單元格顏色。

  • 提示:如果您的數據包含標題,請確保已勾選數據包含標題選項。如果您的數據沒有標題,請取消勾選。

A screenshot of the Sort dialog box in Excel with multiple levels added for sorting by cell color

3. 完成設定後,點擊 OK 按鈕,資料區域將根據您指定的單元格顏色進行排序,請參見截圖:

A screenshot showing an Excel table sorted by cell color in the specified order

提示:根據上述步驟,您也可以通過選擇字體顏色或單元格圖標來排序數據 顏色使用條件格式圖示 在排序對話框中。
A screenshot of Excel's Sort dialog box configured to sort data by font color or conditional formatting icon


2.3 按多列排序數據

如果您有一個如下面截圖所示的大型數據集,現在,您希望進行多級數據排序以更清晰地閱讀數據,例如,首先按區域列排序,然後按州列排序,最後按銷售列排序。您如何在 Excel 中完成這個排序?

A screenshot of a large dataset in Excel to be sorted by Region, State, and Sales columns

要按多列排序資料,請按照以下步驟操作:

1. 選擇您要排序的資料區域,然後點擊數據 > 排序以進入排序對話框。

2. 在排序對話框中,點擊添加級別按鈕兩次,因為您想使用三列進行排序。然後您可以看到列表框中添加了兩個然後依據規則級別:

提示:如果您的數據包含標題,請確保已勾選數據包含標題選項。如果您的數據沒有標題,請取消勾選。

A screenshot of Excel's Sort dialog box with multiple levels added for sorting by three columns

3. 從排序依據接著依據的下拉列表中,選擇您要排序的列名稱,然後在 排序依據部分分別選擇每個選定列的單元格值,最後根據需要選擇排序順序。

A screenshot of Excel's Sort dialog box with columns, sorting values, and orders selected for multi-level sorting

4. 然後,點擊 OK,您將獲得如下截圖所示的排序結果:

A screenshot of a sorted Excel dataset based on Region, State, and Sales columns


2.4 根據自定義列表排序數據

除了按字母或數字順序排序資料外,此排序功能還提供自訂列表排序。例如,您希望按狀態排序以下資料區域 - 未開始、進行中、已完成。這裡,我將介紹如何處理這種類型的排序。

A screenshot of an Excel dataset to be sorted by a custom list defined by Status (Not Started, In Progress, Completed)

1. 選擇您要排序的資料區域,然後點擊數據 > 排序以進入排序對話框。

2. 在排序對話框中,從部分選擇您要排序的列,然後在排序依據部分選擇,在排序方式部分,點擊自訂列表選項,請參閱截圖:

提示:如果您的數據包含標題,請確保已勾選“數據包含標題”選項。如果您的數據沒有標題,請取消勾選。

A screenshot of Excel's Sort dialog box showing the Custom List option selected for custom sorting

3. 然後會彈出一個自訂列表框,請執行以下操作:

  • 自訂列表框中點擊 NEW LIST
  • 列表項目框中按您希望排序的順序輸入文字字串;(輸入文字時,請按Enter鍵以分隔項目。)
  • 最後,點擊添加按鈕,新列表立即添加到自訂列表框中。

A screenshot of the Custom Lists dialog box in Excel, with a new list being created for custom sorting

4. 然後,點擊 OK 按鈕返回到 排序 對話框。新的自訂列表項目現在顯示在 排序依據 下拉列表中。

A screenshot of Excel's Sort dialog box displaying the newly created custom list in the Order section

5. 然後,點擊 OK 按鈕關閉對話框,結果,資料區域已按照您定義的自訂列表進行排序,請參見截圖:

A screenshot of an Excel dataset to be sorted by a custom list defined by Status (Not Started, In Progress, Completed)


2.5 從左到右排序資料(水平排序)

通常,您總是從上到下垂直排序資料表,但有時您可能希望根據行值進行排序(從左到右排序)。例如,在下面的資料區域中,我想根據名稱行的值進行排序。

A screenshot of a dataset in Excel to be sorted horizontally based on the Name row

在這種情況下,排序功能具有內建的功能,允許您從左到右排序。請按照以下步驟進行:

1. 選擇您要排序的資料區域(不包括標題),然後點擊數據 > 排序以進入排序對話框。

2. 在彈出的排序對話框中,點擊選項按鈕,然後在排序選項對話框中,選擇從左到右排序選項,請參閱截圖:

A screenshot of Excel's Sort Options dialog box with the Sort left to right option selected

3. 點擊 OK 返回排序對話框,現在,在部分,指定您要根據的排序行號,然後在排序依據部分選擇單元格值,最後在排序順序部分選擇您需要的排序順序,請參見截圖:

A screenshot of Excel's Sort dialog box configured to sort data horizontally based on a specific row

4. 然後,點擊確定,您的數據將按如下截圖顯示進行排序:

A screenshot of an Excel dataset sorted horizontally based on the values in the Name row


2.6 按區分大小寫順序排序數據

通常,資料排序不會區分大小寫,如下第一個截圖所示。但是,如果您想要進行區分大小寫的排序,如下第二個截圖所示,您該如何在 Excel 中解決這個問題?

A screenshot of an Excel dataset where sorting is case-insensitive and case-sensitive

要在 Excel 中執行區分大小寫的排序,請按以下步驟操作:

1. 選擇您要排序的資料區域,然後點擊數據 > 排序以進入排序對話框。

2. 在排序對話框中,在部分指定您要排序數據的列名稱,然後在排序依據部分選擇單元格值,最後在排序順序部分選擇您需要的排序順序,請參見截圖:

提示:如果您的數據包含標題,請確保已勾選“數據包含標題”選項。如果您的數據沒有標題,請取消勾選。

A screenshot of the Excel Sort dialog box

3. 繼續在此對話框中點擊選項按鈕,在排序選項提示框中,勾選區分大小寫選項,請參閱截圖:

A screenshot of the Sort Options dialog box in Excel with the Case sensitive option selected

4. 點擊確定 > 確定以關閉對話框,數據將按區分大小寫的順序排序,當文字相同時,先小寫後大寫。請參見截圖:

A screenshot of an Excel dataset sorted in case-sensitive order, with lowercase letters sorted before uppercase


排序的高級用法

在日常工作中,您可能會遇到其他更複雜、實用、具體的排序問題,本節將討論 Excel 中的多種類型排序任務。

3.1 根據出現頻率排序數據

假設您有一列數據,現在您希望根據數據出現頻率的降序來排序此列,如下圖所示。這裡,我將介紹兩種方法來解決這個任務。

A screenshot of an Excel column showing unsorted data where sorting by frequency is required

 使用輔助列根據出現頻率排序資料

在 Excel 中,沒有直接的方法可以根據出現次數對數據進行排序。這裡,您可以創建一個輔助公式來獲取每個文本的出現頻率,然後根據輔助列進行排序,以獲得所需的排序結果。

1. 在原始數據旁邊的空白單元格中輸入以下公式,例如 B2,然後向下拖動填充手柄到其他單元格以應用此公式,請參閱截圖:

=COUNTIF($A$2:$A$16,A2)

備註:在上述公式中,A2:A16 是您想要按出現頻率排序的資料列表,而 A2 是此列表中的第一個資料。

A screenshot of an Excel dataset with a helper column showing occurrence counts using a COUNTIF formula

2. 然後,繼續選擇公式單元格,接著,根據需要點擊數據 > 升序排序降序排序,在彈出的排序警告提示框中,選擇展開選擇範圍,請參見截圖:

A screenshot of Excel's Sort Warning prompt asking to expand the selection when sorting by a helper column

3. 然後,點擊排序按鈕,現在原始列已按出現頻率排序,如以下截圖所示:

A screenshot of an Excel column sorted by the frequency of values using a helper column

提示:

1. 獲得結果後,您可以根據需要刪除輔助列。

2. 如果有文字字串出現的次數相同,相同的文字可能不會被排序在一起。在這種情況下,您應該定位至 排序 對話框中,首先按助手列排序,然後按文字排序,如下圖所示:
A screenshot of Excel's Sort dialog box configured to sort by a helper column and then by text values


 使用方便的功能根據出現頻率排序數據

如果您擁有 Kutools for Excel,使用其高級排序功能,您可以在不需要輔助列的情況下,快速且輕鬆地根據出現頻率排序數據。

Kutools for Excel 提供超過 300 種進階功能,簡化複雜任務,提升創造力與效率。 結合 AI 能力,Kutools 能夠精準自動化任務,讓數據管理變得輕而易舉。Kutools for Excel 的詳細資訊...免費試用...

1. 選擇您要排序的資料列表,然後點擊 Kutools Plus > 排序 > 高級排序,請參閱截圖:

A screenshot of the Kutools Plus Advanced Sort option in Excel

2. 在高級排序對話框中,從部分選擇您要排序的列,然後在 排序依據下拉列表中選擇出現頻率,最後在排序依據部分指定排序順序,請參閱截圖:

提示:如果您的數據包含標題,請確保已勾選數據包含標題選項。如果您的數據沒有標題,請取消勾選。

A screenshot of the Advanced Sort dialog box in Kutools for Excel, configured to sort data by frequency

3. 然後,點擊 OK 按鈕,數據列表將立即按出現次數排序,請參見截圖:

A screenshot showing data in Excel sorted by frequency using Kutools


3.2 根據字元長度排序資料

如果您有一份包含不同長度字串的數據列表,現在您可能需要根據字元長度排序數據,以使列看起來整齊。此部分將討論如何根據字元數排序數據。

 使用輔助列根據字元長度排序數據

要按字元長度排序一列,您應該使用 LEN 函數來計算每個單元格的字元數,然後應用排序功能來排序數據列表,請按照以下步驟操作:

1. 在原始資料旁的空白儲存格中輸入公式 =LEN(A2),例如 B2,然後向下拖曳填充柄至其他儲存格以應用此公式,請參閱螢幕截圖:

A screenshot of an Excel dataset with a helper column using the LEN function to calculate character length

2. 然後,保持選擇公式單元格,接著根據需要點擊數據 > 升序降序,在彈出的排序警告提示框中,選擇展開選擇,請參見截圖:

A screenshot of Excel's Sort Warning dialog when sorting by a helper column based on character length

3. 然後,點擊排序按鈕,字串已按字元長度排序。您可以根據需要刪除輔助列B。請參閱截圖:

A screenshot showing strings sorted by character length in Excel after using a helper column


 使用簡單選項根據字元長度排序資料

要快速輕鬆地按字元數排序資料,我推薦一個方便的工具—— Kutools for Excel。使用其高級排序功能,您可以輕鬆完成這項任務。

Kutools for Excel 提供超過 300 種進階功能,簡化複雜任務,提升創造力與效率。 結合 AI 能力,Kutools 能夠精準自動化任務,讓數據管理變得輕而易舉。Kutools for Excel 的詳細資訊...免費試用...

1. 選擇您要排序的數據列表,然後點擊 Kutools Plus > 排序 > 高級排序

2. 在高級排序對話框中,選擇您要排序的列,然後在 排序依據下拉表中選擇文字長度,最後在排序方式中指定您需要的排序順序。請參閱截圖:

提示:如果您的數據包含標題,請確保勾選數據包含標題。如果您的數據沒有標題,請取消勾選。

A screenshot of Kutools Advanced Sort dialog configured to sort data by text length in Excel

3. 然後,點擊 OK 按鈕,列表中的文字字串已按字元長度排序,如下圖所示:

A screenshot showing data sorted by text length in Excel using Kutools


3.3 按姓氏排序全名

在排序全名列表時,Excel會使用名字的第一個字符進行排序,但如果您想按姓氏排序資料呢?在這裡,我將為您提供一些技巧,讓您輕鬆在Excel中按姓氏排序全名。

 使用輔助列按姓氏排序全名

要根據姓氏對全名進行排序,您應該將姓氏提取到新列中,然後使用排序功能按姓氏的字母順序排列全名。請按照以下步驟進行:

1. 在原始數據旁邊的空白單元格中輸入或複製以下公式,例如 B2,然後向下拖動填充柄到其他單元格以應用此公式,請參閱截圖:

=RIGHT(A2,LEN(A2)-FIND("@",SUBSTITUTE(A2," ","@",LEN(A2)-LEN(SUBSTITUTE(A2," ","")))))

A screenshot of an Excel dataset with a helper column extracting last names from full names

2. 繼續選擇公式單元格,然後根據需要點擊數據 > 升序排序降序排序,在彈出的排序警告提示框中,選擇展開選擇範圍,請參見截圖:

A screenshot of Excel's Sort Warning dialog prompting to expand the selection when sorting by last names

3. 然後,點擊排序按鈕,您將獲得根據姓氏排序的全名,完成後,您可以根據需要刪除輔助列。請參閱截圖:

A screenshot of full names in Excel sorted alphabetically by last names using a helper column


 使用快速方法按姓氏排序全名

如果您不熟悉公式,想要在不使用任何公式的情況下按姓氏排序全名,Kutools for Excel高級排序功能可以幫助您。

Kutools for Excel 提供超過 300 種進階功能,簡化複雜任務,提升創造力與效率。 結合 AI 能力,Kutools 能夠精準自動化任務,讓數據管理變得輕而易舉。Kutools for Excel 的詳細資訊...免費試用...

1. 選擇您想要排序的全名單元格,然後點擊 Kutools Plus > 排序 > 高級排序

2. 在高級排序對話框中,選擇您要排序的列,然後從排序依據的下拉表中選擇 姓氏,最後在排序順序中指定您需要的排序方式。請參見截圖:

提示:如果您的數據包含標題,請確保已勾選數據包含標題選項。如果您的數據沒有標題,請取消勾選。

A screenshot of the Kutools Advanced Sort dialog configured to sort data by last names in Excel

3. 然後,點擊 OK 按鈕,完整名稱列會立即按姓氏排序。

A screenshot of full names in Excel sorted alphabetically by last names using Kutools


3.4 按郵箱域名排序電子郵件地址

如果您有一個電子郵件地址列表需要按域名而不是僅按地址的第一個字母進行排序,您如何在 Excel 中實現這一點?本節將介紹一些快速的方法來按域名排序電子郵件地址。

 使用輔助列按域名排序郵箱地址

在這裡,您可以創建一個公式以將郵箱域名提取到另一列,然後根據新的域名列對原始郵箱地址進行排序。

1. 在您的郵箱地址旁邊的空白單元格中輸入以下公式,在此示例中,我將此公式輸入到單元格C2,然後拖動填充柄到您想要應用此公式的區域。所有的郵箱域名將從地址中提取,請參閱截圖:

=RIGHT(B2,LEN(B2)-FIND("@",B2))

A screenshot of an Excel dataset with a helper column extracting domains from email addresses

2. 保持公式單元格選中,然後根據需要點擊數據 > 排序 A 到 Z排序 Z 到 A,在排序警告對話框中,勾選展開選擇,請參見截圖:

A screenshot of Excel's Sort Warning dialog prompting to expand the selection when sorting by domains

3. 然後,點擊排序按鈕以您指定的升序或降序方式按郵箱域名排序資料。

A screenshot of email addresses in Excel sorted by domains in alphabetical order

4. 排序後,您可以根據需要刪除輔助列。


 只需幾次點擊即可按域名排序郵箱地址

如果您擁有 Kutools for Excel,使用其高級排序功能,只需幾次點擊即可按字母順序對郵箱地址的域名進行排序。

Kutools for Excel 提供超過 300 種進階功能,簡化複雜任務,提升創造力與效率。 結合 AI 能力,Kutools 能夠精準自動化任務,讓數據管理變得輕而易舉。Kutools for Excel 的詳細資訊...免費試用...

1. 選擇您想要排序的整個資料區域,然後點擊 Kutools Plus > 排序 > 高級排序

2. 在高級排序對話框中,選擇您要排序的列,然後從排序依據的下拉表中選擇郵箱域名,最後在排序方式部分指定您需要的排序順序。請參閱截圖:

提示:如果您的數據包含標題,請確保已勾選數據包含標題選項。如果您的數據沒有標題,請取消勾選。

A screenshot of the Kutools Advanced Sort dialog configured to sort email addresses by domains in Excel

3. 點擊 OK,數據區域已按郵箱域名排序,如下圖所示:

A screenshot of email addresses in Excel sorted alphabetically by domains using Kutools


3.5 排序一列以匹配另一列

如果您有兩列資料完全相同或幾乎相同,但順序不同,現在,您可能需要對這兩列進行排序,以便相同的值在這兩列中對齊在相同的行。在本節中,我將介紹此類排序的兩種情況。

 對兩列完全相同的項目進行匹配排序

例如,我有兩列包含相同的項目,但順序不同,此處我希望將第二列排序以匹配第一列,如下圖所示。

A screenshot of two columns with identical items in different orders, ready to be matched in Excel

1. 在原始資料旁的空白單元格中輸入以下公式,然後拖曳填充柄以將此公式應用到列表中的所有單元格,這將返回每個值在列B中相對於列A的位置,請參閱截圖:

=MATCH(B2,$A$2:$A$10,0)

A screenshot of Excel showing a helper column using the MATCH formula to align two columns

2. 然後,選擇列 B 和新的助手列,點擊資料 > 排序以進入排序對話框,在排序對話框中,執行以下操作:

  • 區域中選擇您想要根據其排序數據的輔助列;
  • 然後,在排序依據部分選擇
  • 最後,在排序依據部分選擇小到大選項。

A screenshot of Excel's Sort dialog configured to align two columns based on a helper column

3. 然後,點擊 OK 按鈕。現在,您將看到兩列完全匹配,如下圖所示。您可以根據需要刪除公式列。

A screenshot of two columns in Excel successfully matched by sorting with a helper column


 將兩列不完全相同的項目進行匹配排序

有時候,兩列中的項目可能不完全相同。例如,我希望將第二列中的數據排序,以便與第一列中的數據匹配,使相同的值在相同的行上對齊,如下圖所示。

A screenshot of two columns with non-identical items, ready to be matched in Excel

1. 在這兩列之間插入一個新的空白列。

2. 在 B2 單元格中輸入以下公式,然後拖動填充手柄將此公式填充到所需的單元格。現在,您可以看到 C 列中的數據已排序以匹配 A 列中的數據。

=IF(ISNA(MATCH(A2,$C$2:$C$8,0)),"",INDEX($C$2:$C$8,MATCH(A2,$C$2:$C$8,0)))

A screenshot of two columns in Excel aligned by inserting a blank column and using a formula


3.6 從資料列表中排序並提取生成唯一值

如果您有一個包含一些重複值的列表,現在,您只想提取唯一值並按字母順序排序,如下圖所示,這裡,我將介紹一些公式來處理這種類型的排序。

A screenshot of an Excel list with duplicates, ready for sorting and extracting unique values

1. 請在空白單元格 C2 中輸入以下公式,然後按 Ctrl + Shift + Enter 鍵以獲得第一個結果,請參閱截圖:

=IFERROR(INDEX($A$2:$A$12,MATCH(0,COUNTIF($A$2:$A$12,"<"&$A$2:$A$12)-SUM(COUNTIF($A$2:$A$12,"="&C$1:C1)),0)),"")

備註:在公式中,A2:A12 是您要從中提取生成唯一值的資料清單,C1 是您放置公式的單元格上方。請根據需要更改它們。

A screenshot of unique values being extracted and sorted in Excel using a formula

2. 然後拖動填充柄以提取值,直到出現空白單元格,所有唯一值將被提取並按升序排序,請參見截圖:

A screenshot of an Excel column with unique values sorted alphabetically

提示:

1. 如果您希望提取的唯一值按降序排列,請應用以下公式:(記得按 Ctrl + Shift + Enter 鍵)

=IFERROR(INDEX($A$2:$A$12,MATCH(0,COUNTIF($A$2:$A$12,">"&$A$2:$A$12)-SUM(COUNTIF($A$2:$A$12,"="&C$1:C1)),0)),"")

2. 如果資料列表包含空格單元格或數字字符,上述公式將無法運作。在這種情況下,您應使用以下公式:(記得按 Ctrl + Shift + Enter 鍵)

=IFERROR(SMALL(IF((COUNTIF($C$1:C1,$A$2:$A$12)=0)*ISNUMBER($A$2:$A$12),$A$2:$A$12,"A"),1),INDEX($A$2:$A$12,MATCH(SMALL(IF(ISTEXT($A$2:$A$12)*(COUNTIF(C1:$C$1,$A$2:$A$12)=0),COUNTIF($A$2:$A$12,"<"&$A$2:$A$12),""),1),IF(ISTEXT($A$2:$A$12),COUNTIF($A$2:$A$12,"<"&$A$2:$A$12),""),0)))

A screenshot of unique numeric values being extracted and sorted in Excel using an advanced formula


3.7 同時獨立排序多行或多列

我們很容易根據一行或一列對一個區域的數據進行排序,但有時您可能希望在區域內獨立地按字母順序排列每一行或每一列,您如何在 Excel 中完成此任務?

 單獨排序多行

假設您有一個資料區域需要在每一行中按字母順序重新排列,如下圖所示,為了解決這個問題,這裡有兩個快速技巧供您參考。

A screenshot of multiple rows in Excel to be sorted independently

使用公式一次獨立排序多行

1. 將行標籤複製到您希望獲得排序結果的其他區域。

2. 然後,將以下公式複製或輸入到空白單元格 H2 中,接著同時按下 Ctrl + Shift + Enter 鍵以獲得第一個結果,請參見截圖:

=INDEX($B2:$E2, MATCH(COLUMNS($B2:B2), COUNTIF($B2:$E2, "<="&$B2:$E2),0))

A screenshot showing the formula applied to sort the first row independently in Excel

3. 然後,選擇公式單元格 H2,向右拖動填充柄以將公式複製到第一行的其他單元格,在此示例中,拖動到單元格 K2,請參見截圖:

A screenshot showing sorted values in the first row of an Excel table using a formula

4. 繼續選擇第一行的公式單元格 (H2:K2),然後向下拖動填充柄以將公式複製到其他行。現在,您可以看到每一行的值都已單獨按升序排序。

A screenshot of multiple rows sorted independently in Excel using a formula


使用 VBA代碼同時獨立排序多行

以下的 VBA代碼也可以幫助您輕鬆地按字母順序排序每一行的數據。請按照以下步驟操作:

1. 選擇您想要在每一列中排序的數據。

2. 按住 ALT + F11 鍵以開啟 Microsoft Visual Basic for Applications 視窗。

3. 然後,點擊 插入 > 模組,並將以下代碼粘貼到模組視窗中。

VBA代碼:一次獨立排序多行

Sub SortIndividualR()
'Updateby Extendoffice
    Dim xRg As Range, yRg As Range
    If TypeName(Selection) <> "Range" Then Exit Sub
    Set xRg = Selection
    If xRg.Count = 1 Then
        MsgBox "Select multiple cells!", vbExclamation, "Kutools for Excel"
        Exit Sub
    End If
    With Application
        .ScreenUpdating = False
        .EnableEvents = False
        .Calculation = xlCalculationManual
    End With
    Application.ScreenUpdating = False
    For Each yRg In xRg.Rows
        yRg.Sort Key1:=yRg.Cells(1, 1), _
        Order1:=xlAscending, _
        Header:=xlNo, _
        Orientation:=xlSortRows
    Next yRg
    With Application
        .ScreenUpdating = True
        .EnableEvents = True
        .Calculation = xlCalculationAutomatic
    End With
    Application.ScreenUpdating = True
End Sub

4. 然後,按下 F5 鍵來執行此代碼,每一行的數據將立即按升序排序,請參見截圖:

A screenshot of multiple rows sorted independently in Excel using VBA code


 單獨排序多個列

要單獨排序每一列中的數據,以下兩種方法可以幫助您。

使用公式一次獨立排序多個列

1. 將列標籤複製到您希望獲得排序結果的其他區域。

2. 然後,在空白單元格 F3 中輸入以下公式,並同時按下 Ctrl + Shift + Enter 鍵以獲得第一個結果,接著,向下拖動填充柄以將此公式複製到其他行,如截圖所示:

=INDEX(A$3:A$6,MATCH(ROWS(A$3:A3),COUNTIF(A$3:A$6,"<="&A$3:A$6),0))

A screenshot showing the formula applied to sort the first column independently in Excel

3. 繼續選擇第一行的公式單元格(F3:F6),然後向右拖動填充柄以將公式複製到其他列。現在,每列的值已單獨按升序排序,如下圖所示:

A screenshot of multiple columns sorted independently in Excel using a formula


使用VBA代碼一次獨立排序多個列

要獨立排序多列中的數據,以下 VBA代碼也可以幫助您,請按以下步驟操作:

1. 按住 ALT + F11 鍵以開啟 Microsoft Visual Basic for Applications 視窗。

2. 然後,點擊插入 > 模組,並將以下代碼粘貼到模組視窗中。

VBA代碼:同時獨立排序多個列

Sub SortIndividualJR()
'Updateby Extendoffice
    Dim xRg As Range
    Dim yRg As Range
    Dim ws As Worksheet
    Set ws = ActiveSheet
    On Error Resume Next
    Set xRg = Application.InputBox(Prompt:="Range Selection:", _
                                    Title:="Kutools for excel", Type:=8)
    Application.ScreenUpdating = False
    For Each yRg In xRg
        With ws.Sort
            .SortFields.Clear
            .SortFields.Add Key:=yRg, Order:=xlAscending
            .SetRange ws.Range(yRg, yRg.End(xlDown))
            .Header = xlNo
            .MatchCase = False
            .Apply
        End With
    Next yRg
    Application.ScreenUpdating = True
End Sub

3. 然後,按下 F5 鍵執行此代碼,會彈出一個提示框,請選擇您要排序的資料區域,請參見截圖:

A screenshot showing the VBA prompt for selecting a range to sort multiple columns independently in Excel

4. 然後,點擊 OK,每一列將會被快速地單獨排序。

A screenshot of multiple columns sorted independently in Excel using VBA code


3.8 在 Excel 中隨機排序數據

我們通常會以升序或降序的字母順序對數據進行排序,但您是否曾嘗試在選擇的區域中隨機排序數據?在本節中,我將討論如何隨機打亂一個區域的單元格。

 使用輔助列隨機排序一列數據

通常,您可以使用 RAND 函數來獲取隨機數,然後根據這個隨機列表對數據進行排序,請按照以下步驟操作:

1. 輸入此公式:=RAND() 到資料旁的一個空白單元格中,然後向下拖動填充手柄以填充一列隨機數,如下圖所示:

A screenshot of a column in Excel with random numbers generated for sorting

2. 繼續選擇公式單元格,然後根據需要點擊數據 > 升序降序。在彈出的排序警告提示框中,選擇展開選擇範圍,請參見截圖:

A screenshot of Excel's Sort dialog used to shuffle data based on random numbers

3. 然後,點擊排序按鈕,數據列表將立即被打亂,請參見截圖:

A screenshot showing data shuffled randomly in Excel using a helper column


 使用驚人的功能隨機排序單元格、行或列

Kutools for Excel 支援一個強大的功能——隨機排序,使用此功能,您可以在一個區域內的儲存格中隨機排列數據,或在選擇的每一列/行中隨機排列,甚至可以一次隨機排列整行或整列。

Kutools for Excel 提供超過 300 種進階功能,簡化複雜任務,提升創造力與效率。 結合 AI 能力,Kutools 能夠精準自動化任務,讓數據管理變得輕而易舉。Kutools for Excel 的詳細資訊...免費試用...

1. 選擇您想要隨機排序的資料區域,然後點擊 Kutools Plus > 排序 > 隨機排序。請參見截圖:

A screenshot of the Kutools Sort Range Randomly feature in Excel

2. 在隨機排序或選擇對話框中,於排序標籤下,選擇您需要的以下選項之一:

  • 整列排序:隨機排序選定區域中的整列。
  • 整欄排序:隨機排列選擇區域中的整欄。
  • 排序在每一列:單獨隨機排列每一列中的單元格。
  • 排序在每一欄:單獨隨機排列每一欄中的單元格。
  • 選區內的所有單元格:隨機排列選定區域內的所有單元格。

A screenshot of options for sorting rows, columns, or cells randomly using Kutools

3. 然後,點擊 確定按鈕,數據會立即隨機化。


3.9 根據月、日或月和日排序日期列表

在 Excel 中排序日期時,排序功能會預設按年、月、日排序日期列表,但在某些情況下,您可能需要按月或日,或按月和日排序而忽略年份。如何在 Excel 中解決這個問題?

 使用輔助列按月或日排序日期列表

若要僅根據月或日對日期進行排序,您可以從日期中提取月或日的數字,然後根據提取的月或日數字列對日期進行排序。

1. 請在數據旁邊的空白單元格中輸入以下公式,然後向下拖動填充柄以將此公式複製到其他單元格,請參見截圖:

=MONTH(B2) (提取月份數字)
=日(B2)             
(提取日期數字)

A screenshot of Excel showing extracted months from dates for sorting

2. 返回月份或日期數字後,繼續選擇公式單元格,然後根據需要點擊數據 > 升序排序 降序排序。在彈出的排序警告提示框中,選擇展開選擇,請參見截圖:

A screenshot of Excel's Sort dialog to organize dates by extracted months

3. 然後,點擊排序按鈕,日期現在已按月排序,忽略了年份和日。請參見截圖:

A screenshot of a list of dates sorted by month in Excel, ignoring year and day


 只需幾次點擊即可按月或日排序日期列表

如果您擁有 Kutools for Excel,使用其 高級排序功能,您可以僅用幾次點擊就按月或日排序日期列表。

Kutools for Excel - 包含超過 300 種 Excel 必備工具。永久免費享受 AI 功能!立即下載!

1. 選擇您要排序的資料區域,然後點擊 Kutools Plus > 排序 > 高級排序

2. 在高級排序對話框中,選擇您要排序的列,並從排序依據下拉表中選擇,最後在排序方式區域中指定您需要的排序順序。

提示:如果您的數據包含標題,請確保已勾選數據包含標題選項。如果您的數據沒有標題,請取消勾選。

A screenshot of Kutools' Advanced Sort dialog sorting dates by month in Excel

3. 然後,點擊 OK 按鈕,數據已根據您指定的月份或日期進行排序,忽略年份,請參見截圖:

A screenshot of a list of dates sorted by month in Excel using Kutools


 使用輔助列按月和日排序日期列表

現在,如果您需要僅按月和日排序日期列表而不包含年份,可以使用 TEXT 函數將日期轉換為指定格式的文字字串,然後根據需要應用排序功能。

1. 在您的數據旁邊的空白單元格中輸入以下公式,然後將此公式複製到數據底部,月份和日期已被提取為文字字串,如下圖所示:

=TEXT(B2,"MMDD")

A screenshot of Excel extracting month and day from dates using the TEXT function

2. 保持公式單元格選中,然後根據需要點擊 數據 > 升序降序,在彈出的排序警告提示框中,選擇展開選擇,如截圖所示:

A screenshot of Excel's Sort dialog to organize dates by month and day only

3. 然後,點擊排序按鈕,現在,您的數據僅按月和日排序。

A screenshot of a list of dates sorted by month and day in Excel using a helper column


3.10 根據星期幾排序日期列表

要根據星期幾對日期列表進行排序,也就是將日期從星期一到星期日或從星期日到星期六排序。在本節中,我將介紹兩種在 Excel 中完成此任務的方法。

 使用輔助列按星期幾排序日期列表

按星期幾排序日期時,您還需要一個輔助列來返回與星期幾相對應的數字,然後根據輔助列對日期進行排序。

1. 請在空白單元格中輸入或複製以下公式,然後向下拖動填充柄以將此公式複製到其他單元格,請參見截圖:

=WEEKDAY(B2)           (從星期日 (1) 開始到星期六 (7))
=WEEKDAY(B2,2)       
(從星期一(1)到星期日(7)開始)

A screenshot of Excel showing WEEKDAY formulas extracting weekday numbers from dates

2. 保持公式單元格選中,然後根據需要點擊數據 > 升序降序,在彈出的排序警告提示框中,選擇展開選擇,請參見截圖:

A screenshot of Excel's Sort dialog sorting dates based on weekday numbers

3. 然後,點擊排序按鈕以獲得所需的排序結果,請參閱截圖:

A screenshot of Excel showing a list of dates sorted by days of the week


 使用簡單選項按星期幾排序日期列表

借助 Kutools for Excel高級排序功能,您可以在不使用任何輔助公式的情況下快速解決此問題。

Kutools for Excel 提供超過 300 種進階功能,簡化複雜任務,提升創造力與效率。 結合 AI 能力,Kutools 能夠精準自動化任務,讓數據管理變得輕而易舉。Kutools for Excel 的詳細資訊...免費試用...

1. 選擇您要排序的資料區域,然後點擊 Kutools Plus > 排序 > 高級排序

2. 在高級排序對話框中,選擇您要排序的列,然後從排序依據下拉表中選擇星期幾,最後在排序順序部分指定您需要的排序順序

提示:如果您的數據包含標題,請確保已勾選數據包含標題選項。如果您的數據沒有標題,請取消勾選。

A screenshot of Kutools' Advanced Sort feature with an option to sort by day of the week

3. 然後,點擊 OK 按鈕,數據已按星期幾排序。請參見截圖:

A screenshot of Excel showing dates sorted by days of the week using Kutools


3.11 根據季度排序日期列表

本節將介紹如何在忽略年份的情況下,按季度排序日期列表,並為您提供兩個技巧。

 使用輔助列按季度排序日期列表

就像上述解決方案一樣,您應該創建一個公式助手列以從給定日期中提取季度號,然後根據這個新的助手列對日期進行排序。

1. 請在空白單元格中輸入或複製以下公式,然後向下拖動填充柄以將此公式複製到其他單元格,請參見截圖:

=ROUNDUP(MONTH(B2)/3,0)

A screenshot of Excel with a helper column showing quarter numbers extracted from dates

2. 繼續選擇公式單元格,然後根據需要點擊數據 > 升序降序,在彈出的排序警告提示框中,選擇展開選擇,請參閱截圖:

A screenshot of Excel's Sort dialog sorting dates based on extracted quarter numbers

3. 然後,點擊 排序按鈕,資料區域已按季度排序,如下圖所示:

A screenshot showing a list of dates sorted by quarter in Excel


 使用方便的功能按季度排序日期列表

如果您已安裝 Kutools for Excel,使用高級排序功能可以幫助您輕鬆完成這項任務,只需幾次點擊。

1. 選擇您要排序的資料區域,然後點擊 Kutools Plus > 排序 > 高級排序

2. 在高級排序對話框中,選擇您要排序的列,然後從排序依據下拉表中選擇季度,最後在排序方式中指定您需要的排序順序。

提示:如果您的數據包含標題,請確保選中“數據包含標題”選項。如果您的數據沒有標題,請取消選中該選項。

A screenshot of Kutools' Advanced Sort feature used to sort dates by quarter in Excel

3. 最後,點擊 OK 按鈕,選擇的區域將按季度排序。


3.12 根據月份名稱或工作日名稱排序資料

如果您有一個月份名稱的清單作為文字,排序時會按字母順序排列,而不是按1月到12月的月份順序。如果您需要從1月到12月排序月份名稱,自訂排序功能可能會幫助您。

1. 選擇您要根據月份名稱排序的資料區域,然後點擊數據 > 排序以進入排序對話框。

2. 在 排序對話框中,在部分,選擇包含月份名稱的列名,在排序依據部分,選擇單元格值,最後在 排序順序部分,選擇自訂列表,請參見截圖:

提示:如果您的數據包含標題,請確保已勾選數據包含標題選項。如果您的數據沒有標題,請取消勾選。

A screenshot of Excel's Sort dialog showing custom list selection

3. 然後,在彈出的自訂列表對話框中,根據工作表中月份的列出方式,選擇完整月份名稱(1月、2月、3月,…)或簡短名稱(1月、2月、3月…),請參閱截圖:

A screenshot of the Custom List dialog in Excel with month names selected

4. 然後,點擊確定 > 確定以關閉對話框,現在,您的數據已按月份名稱按時間順序排序,如下圖所示:

A screenshot of sorted data arranged by month names in chronological order

提示:若要按工作日名稱排序,請在自訂列表對話框中選擇完整名稱(星期日、星期一、星期二……)或簡稱(週日、週一、週二……)以符合您的需求。


3.13 根據奇偶數排序數據

在 Excel 中,我們可能很容易將數字按升序或降序排序,但您是否曾嘗試過在列表中將數字從奇數排序到偶數或從偶數排序到奇數呢?在本節中,我將介紹一些完成此任務的方法。

 使用輔助列按奇偶數排序數據

要按奇數或偶數排序數字列表,您應該創建一個公式來識別奇數或偶數,然後應用排序功能。

1. 在數字列表旁邊的空白儲存格中輸入公式 =ISODD(A2),然後拖曳以將公式複製到其他儲存格。現在,您可以看到顯示 TRUE 和 FALSE,TRUE 表示奇數,FALSE 表示偶數。

A screenshot of Excel showing the ISODD formula identifying odd and even numbers

2. 繼續選擇公式單元格,然後根據需要點擊數據 > 升序排序降序排序,在彈出的排序警告提示框中,選擇展開選擇,請參閱截圖:

A screenshot of Excel's Sort dialog sorting numbers by odd and even values

3. 然後點擊 排序按鈕,所有偶數將被排序在一起,然後是奇數,或反之亦然。請參見截圖:

A screenshot of a sorted list where numbers are grouped by odd or even values


 使用實用功能按奇數或偶數排序數據

借助 Kutools for Excel高級排序功能,您可以快速將數字從奇數排序為偶數,或反之亦然。

Kutools for Excel 提供超過 300 種進階功能,簡化複雜任務,提升創造力與效率。 結合 AI 能力,Kutools 能夠精準自動化任務,讓數據管理變得輕而易舉。Kutools for Excel 的詳細資訊...免費試用...

1. 選擇您要排序的資料區域,然後點擊 Kutools Plus > 排序 > 高級排序

2. 在高級排序對話框中,點擊您想要排序的,然後從排序依據部分選擇奇偶數,接著指定排序順序(升序從偶數到奇數,降序從奇數到偶數),請參見截圖:

提示:如果您的數據包含標題,請確保已勾選“數據包含標題”選項。如果您的數據沒有標題,請取消勾選。

A screenshot of Kutools' Advanced Sort feature with an option to sort by odd and even numbers

3. 然後點擊 OK 按鈕,您將獲得以下結果:

A screenshot showing numbers sorted by odd and even values using Kutools


3.14 根據絕對值排序數據

如果列中同時存在正數和負數,Excel 在排序時會默認將數字按升序或降序排列。但是,在某些情況下,您可能希望在排序數據時忽略負號,也就是說按絕對值排序數字。如何在 Excel 中實現此任務?

 使用輔助列按絕對值排序數據

要按絕對值排序數字,通常應先創建一個公式將所有值轉換為絕對值,然後應用排序功能來排序數字。

1. 在相鄰的空白單元格中,例如 B2,輸入此公式 =ABS(A2),然後拖動填充柄將此公式複製到其他單元格。現在,您可以看到所有的值都已轉換為絕對值:

A screenshot of Excel showing the ABS formula to convert numbers to absolute values

2. 保持公式單元格選中,然後,根據需要點擊數據 > 升序降序,在彈出的排序警告提示框中,選擇展開窗格,見截圖:

A screenshot of Excel's Sort dialog for sorting numbers based on absolute values

3. 然後點擊排序按鈕,所有數字已按絕對值排序,如下圖所示:

A screenshot showing numbers sorted by absolute values in Excel


 使用方便的選項按絕對值排序數據

如果您厭倦了創建輔助列,我在這裡推薦 Kutools for Excel,使用其高級排序功能,您可以直接且簡單地按絕對值排序數字。

Kutools for Excel - 包含超過 300 種 Excel 必備工具。永久免費享受 AI 功能!立即下載!

1. 選擇您要排序的資料區域,然後點擊 Kutools Plus > 排序 > 高級排序

2. 在高級排序對話框中,點擊您想要排序的,然後在排序依據部分選擇絕對值,接著指定排序順序,請參見截圖:

提示:如果您的數據包含標題,請確保已勾選數據包含標題。若您的數據沒有標題,請取消勾選。

A screenshot of Kutools' Advanced Sort feature sorting numbers by absolute values

3. 然後,點擊 OK,所有數字將被排序為從小到大或從大到小的值,忽略負號。


自動排序資料當輸入或更改資料時

Excel中的排序功能不是動態的,每次數據更改或添加新數據後,您都需要重新排序。在本節中,我將討論如何在數據區域中每次添加新值時自動排序您的數據。


4.1 使用公式自動排序列中的數字值

要自動將數字列表按升序或降序排序,可以使用基於 LARGE、SMALL 和 ROW 函數的公式。

1. 請在來源數據旁邊的空白單元格中輸入或複製以下公式,然後向下拖動填充柄到您想應用此公式的單元格,數字將從小到大排列,請參見截圖:

=IFERROR(SMALL($A$2:$A$100,ROWS(B$2:B2)),"")

備註:在此公式中,A2:A100 是您想要自動排序的數字列表,其中包括一些用於新輸入的空白單元格,B2 是您輸入公式的單元格。

A screenshot of an Excel column showing automatically sorted numeric values using a formula

2. 現在,當更改來源數據或輸入新數據時,排序列表將如以下示範所示自動刷新:

A demonstration gif of auto-sorting numbers in Excel using a formula

提示:若要自動將數字降序排列,請使用以下公式:

=IFERROR(LARGE($A$2:$A$100,ROWS(B$2:B2)),"")


4.2 使用公式自動排序列中的文字值

如果您想要自動排序列中的文字值,上述公式將不起作用。在這裡,另一個公式可能會幫助您,請按照以下步驟操作:

1. 在您的資料列旁邊的空白單元格中輸入或複製以下公式,然後同時按下 Ctrl + Shift + Enter 鍵以獲得第一個文字,接著選擇公式單元格,並向下拖曳填充柄至您想要排序的單元格,請參閱截圖:

=IFERROR(INDEX($A$2:$A$100,MATCH(ROWS($A$2:A2),COUNTIF($A$2:$A$100,">="&$A$2:$A$100),0)),"")

A screenshot of Excel column showing text strings auto-sorted in ascending order with a formula

2. 從現在開始,當在A列中輸入值或更改原始數據時,B列中的文字字串將自動按升序排序,請參見以下示範:

A demonstration gif of text auto-sorting in Excel using a formula

提示:若要自動將字串按降序排序,請應用以下公式(記得按 Ctrl + Shift + Enter 鍵):

=IFERROR(INDEX($A$2:$A$100,MATCH(ROWS($A$2:A2),COUNTIF($A$2:$A$100,">="&$A$2:$A$100),0)),"")


4.3 使用VBA代碼自動排序列中的數字和文字混合值

如果一列中同時包含數字和文字值,以下的 VBA 程式碼可能會幫助您自動排序資料列表。

1.右鍵點擊您想要自動排序數據的工作表標籤,然後從上下文選單中選擇檢視程式碼,在彈出的 Microsoft Visual Basic for Applications 視窗中,請將以下程式碼複製並粘貼到空白的模組視窗中,請參見截圖:

VBA 程式碼:當輸入或更改資料時自動升序排序:

Private Sub Worksheet_Change(ByVal Target As Range)
'Updateby Extendoffice
    On Error Resume Next
    If Application.Intersect(Target, Application.Columns(1)) Is Nothing Then Exit Sub
    If Target.Count > 1 Then Exit Sub
    Range("A1").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes, _
                                        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub

備註:在上述程式碼中,輸入的數據將自動在列A中排序。A1是頁首,A2是數據列表的第一個單元格。

A screenshot of Excel VBA editor with a code snippet for auto-sorting data

2. 然後,保存並關閉代碼窗口。現在,當您在列A中輸入新數據或更改原始數據時,數據將自動按升序排序。請參見下面的演示:

A demonstration gif showing VBA auto-sorting data in Excel as values change

提示:如果您想將數據列表按降序排序,請應用以下代碼:

VBA代碼:當數據輸入或更改時自動降序排序:

Private Sub Worksheet_Change(ByVal Target As Range)
'Updateby Extendoffice
    On Error Resume Next
    If Application.Intersect(Target, Application.Columns(1)) Is Nothing Then Exit Sub
    If Target.Count > 1 Then Exit Sub
    Range("A1").Sort Key1:=Range("A2"), Order1:=xlDescending, Header:=xlYes, _
                                        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub

其他排序案例

在日常工作中,您可能會遇到各種不同的排序需求。在本節中,我將介紹一些其他的排序類型,例如在單元格內排序數據、反向排序列或行中的數據等。


5.1 在單元格內排序數據

要在單一單元格內按字母順序排序字串,例如將文字“HDAW”排序為“ADHW”;或者在單元格中排序以逗號分隔的多個單詞,例如將“word, outlook, excel, access”排序為“access, excel, outlook, word”。本節將討論如何在Excel中解決這類排序問題。

 將單元格內的字串值按字母順序排序

要在單元格內按字母順序排序字串值,您應該創建一個使用者自定義函數。請按以下步驟進行:

1. 按住 ALT + F11 鍵以開啟 Microsoft Visual Basic for Applications 視窗。

2. 點擊 插入 > 模組,並在模組視窗中粘貼以下代碼。

VBA代碼:在單元格內排序文字值

Function SortCellContents(xRange As Range)
'Updateby Extendoffice
Dim xArr
Dim xF1, xF2 As Integer
Dim xStrValue As String
Dim xStrT As String
If xRange.Count <> 1 Then
    Exit Function
End If
xStrValue = xRange.Value
ReDim xArr(1 To Len(xStrValue))
For xF1 = 1 To UBound(xArr)
    xArr(xF1) = Mid(xStrValue, xF1, 1)
Next
For xF1 = 1 To UBound(xArr)
    For xF2 = xF1 To UBound(xArr)
        If Asc(xArr(xF2)) < Asc(xArr(xF1)) Then
            xStrT = xArr(xF2)
            xArr(xF2) = xArr(xF1)
            xArr(xF1) = xStrT
        End If
    Next xF2
Next xF1
SortCellContents = Join(xArr, "")
End Function

3. 然後保存並關閉此代碼,返回到您的工作表。接著,在一個空白單元格中輸入此公式 =SortCellContents(A2)以返回結果,並向下拖動填充手柄以將公式複製到其他單元格,然後所有單元格中的文字值將按字母順序排序,請參見截圖:

A screenshot showing string values sorted alphabetically within Excel cells using VBA


 按字母順序排序單元格中以分隔符分隔的文字字串

如果單元格中有多個單詞被特定的分隔符分開,並且需要在單元格內按字母順序排序,可以使用以下的使用者自定義函數來協助。

1. 按住 ALT + F11 鍵以開啟 Microsoft Visual Basic for Applications 視窗。

2. 點擊 插入 > 模組,然後在模組視窗中粘貼以下代碼。

VBA 程式碼:排序單元格內以逗號分隔的文字字串

Function SortCellWithSeparator(CellAddress As Range, DelimiterChar As String, IncludeSpaces As Boolean) As String
'Updateby Extendoffice
Dim xRg As Range
Dim xString As String
Dim xF1, xF2 As Integer
Dim xSArr
Dim xStrT As String
Dim xStrValue As String
Set xRg = CellAddress
xStrValue = WorksheetFunction.Substitute(xRg.Value, " ", "")
xSArr = Split(xStrValue, DelimiterChar)
    For xF1 = 0 To UBound(xSArr)
        For xF2 = xF1 + 1 To UBound(xSArr)
                If xSArr(xF2) < xSArr(xF1) Then
                    xStrT = xSArr(xF2)
                    xSArr(xF2) = xSArr(xF1)
                    xSArr(xF1) = xStrT
                End If
        Next xF2
    Next xF1
xStrValue = ""
For xF1 = 0 To UBound(xSArr)
    xStrValue = xStrValue & xSArr(xF1) & DelimiterChar
Next xF1
SortCellWithSeparator = xStrValue
SortCellWithSeparator = Left(SortCellWithSeparator, Len(SortCellWithSeparator) - 1)
If IncludeSpaces = True Then SortCellWithSeparator = WorksheetFunction.Substitute(SortCellWithSeparator, ",", ", ")
End Function

3. 然後保存並關閉此代碼,返回到您的工作表,在空白單元格中輸入公式 =SortCellWithSeparator(A2,",",TRUE)以返回結果,然後向下拖動填充柄以將公式複製到其他單元格,所有單元格中的文字字串將按字母順序排序,請參見截圖:

備註:如果您的文字字串是由其他區分符分隔,您只需將此公式中的逗號更改為您自己的區分符。

A screenshot showing text strings separated by delimiters sorted alphabetically within Excel cells using VBA


5.2反向排序 / 翻轉列或行中的數據順序

有時候,您可能需要在 Excel 中將垂直資料區域上下顛倒或水平資料區域從左到右反轉。在本節中,我們將介紹三種方法來幫助您完成這項任務。

 使用公式反轉或翻轉列或行中的數據順序

以下公式可以幫助翻轉列或行中的數據順序,請按以下步驟操作:

翻轉列中資料的順序

請在空白單元格中輸入或複製以下公式到您想要放置結果的位置,然後向下拖動填充柄到單元格以反向返回單元格值,請參見截圖:

=OFFSET($A$10,-(ROW(A1)-1),0)

備註:在上述公式中,A1 是列中的第一個單元格,A10 是最後一個單元格。

A screenshot of Excel flipping the order of data in a column using a formula


翻轉整行數據的順序

應用以下公式以水平翻轉行中的數據順序:

=OFFSET($A$1,,COUNTA(1:1)-COLUMN(A1),)

備註:在上述公式中,A1 是該行的第一個單元格,而1:1 是您的數據所在的行號。如果數據在第10 行,您應將其更改為10:10。

然後,向右拖動填充柄至單元格,直到所有值被提取,您將獲得所有數據水平反向,請參見截圖:

A screenshot of Excel flipping the order of data in a row using a formula


使用VBA代碼反向/翻轉多列或多行中的數據順序

上述公式僅適用於單一列或行,如果有多列或多行需要反轉,可以使用以下的 VBA代碼來幫助您。

垂直翻轉選區中的數據順序

1. 首先,您應該備份原始數據,然後按住 ALT + F11 鍵以開啟 Microsoft Visual Basic for Applications 視窗。

2. 點擊 插入 > 模組,並在模組視窗中粘貼以下代碼。

VBA代碼:垂直反向翻轉一個單元格範圍

Sub Flipvertically()
'updateby Extendoffice
Dim Rng As Range
Dim WorkRng As Range
Dim Arr As Variant
Dim i As Integer, j As Integer, k As Integer
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Arr = WorkRng.Formula
For j = 1 To UBound(Arr, 2)
    k = UBound(Arr, 1)
    For i = 1 To UBound(Arr, 1) / 2
        xTemp = Arr(i, j)
        Arr(i, j) = Arr(k, j)
        Arr(k, j) = xTemp
        k = k - 1
    Next
Next
WorkRng.Formula = Arr
End Sub

3. 然後,按下 F5 鍵執行此代碼,會彈出一個提示框,要求您選擇要垂直反向的資料區域,請參見截圖:

A screenshot of the Excel VBA prompt for flipping data vertically in a selected range

4. 然後,點擊 OK 按鈕,資料區域將如以下截圖所示垂直反轉:

A screenshot showing reversed vertical data range in Excel after running VBA code


水平翻轉選區內的資料順序

要將資料區域按水平順序反向排序,請應用以下 VBA代碼:

VBA代碼:垂直反向翻轉一個單元格範圍

Sub Fliphorizontally()
'updateby Extendoffice
Dim Rng As Range
Dim WorkRng As Range
Dim Arr As Variant
Dim i As Integer, j As Integer, k As Integer
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Arr = WorkRng.Formula
For i = 1 To UBound(Arr, 1)
    k = UBound(Arr, 2)
    For j = 1 To UBound(Arr, 2) / 2
        xTemp = Arr(i, j)
        Arr(i, j) = Arr(i, k)
        Arr(i, k) = xTemp
        k = k - 1
    Next
Next
WorkRng.Formula = Arr
End Sub

運行此代碼後,行中的數據已水平反向排序,請參見截圖:

A screenshot showing reversed horizontal data range in Excel after running VBA code


 只需一鍵即可反轉或翻轉列或行中的數據順序

如果您擁有 Kutools for Excel,利用其垂直翻轉範圍水平翻轉選區功能,您只需點擊一次即可垂直和水平翻轉單元格範圍。

Kutools for Excel 提供超過 300 種進階功能,簡化複雜任務,提升創造力與效率。 結合 AI 能力,Kutools 能夠精準自動化任務,讓數據管理變得輕而易舉。Kutools for Excel 的詳細資訊...免費試用...

垂直翻轉選區內的數據順序

1. 選擇您想要反轉的資料區域,然後點擊 Kutools > 區域 > 垂直翻轉範圍 > 全部 / 僅翻轉內容,請參見截圖:

提示:如果選擇全部選項,所有的單元格格式將同時反向;如果選擇僅翻轉內容,則只有單元格的內容會被反向。

A screenshot showing Kutools' Flip Vertical Range option in Excel

2. 然後,資料區域將立即垂直反轉。

A screenshot showing reversed vertical data in Excel using Kutools


水平翻轉選區內的數據順序

1. 選擇資料區域,然後點擊 Kutools > 區域 > 水平翻轉選區 > 全部 / 僅翻轉內容,請參見截圖:

提示:如果選擇全部選項,所有單元格格式將同時反向;如果選擇僅翻轉內容,只有單元格內容會被反向。

A screenshot showing Kutools' Flip Horizontal Range option in Excel

2. 然後,選擇範圍內的所有單元格值將立即水平反轉,如下圖所示:

A screenshot showing reversed horizontal data in Excel using Kutools


5.3 在 Excel 中按字母順序或標籤顏色排序工作表標籤

假設您的工作簿中有大量工作表,如果您需要按字母順序排序工作表標籤,或根據標籤顏色排序工作表標籤,使用正常方法 - 拖放工作表標籤會浪費大量時間。在本節中,我將討論一些技巧,以升序或降序排列工作表標籤。

 使用VBA代碼按字母順序排序工作表標籤

以下 VBA代碼可以幫助將工作表標籤按字母順序升序或降序排序,請按以下步驟操作:

1. 按住 ALT + F11 鍵以開啟 Microsoft Visual Basic for Applications 視窗。

2. 點擊 插入 > 模組,然後將以下宏粘貼到模組視窗中。

VBA:按字母順序排序所有工作表

Sub SortWorkBook()
'Updateby Extendoffice
Dim xResult As VbMsgBoxResult
xTitleId = "KutoolsforExcel"
xResult = MsgBox("Click Yes to sort sheets in ascending order;" & Chr(10) & "Click No will sort in descending order", vbYesNoCancel + vbQuestion + vbDefaultButton1, xTitleId)
For i = 1 To Application.Sheets.Count
    For j = 1 To Application.Sheets.Count - 1
        If xResult = vbYes Then
            If UCase$(Application.Sheets(j).Name) > UCase$(Application.Sheets(j + 1).Name) Then
                Sheets(j).Move after:=Sheets(j + 1)
            End If
            ElseIf xResult = vbNo Then
                If UCase$(Application.Sheets(j).Name) < UCase$(Application.Sheets(j + 1).Name) Then
                    Application.Sheets(j).Move after:=Application.Sheets(j + 1)
            End If
        End If
    Next
Next
End Sub

3. 然後,按下 F5 鍵以執行此宏,在接下來的提示框中,點擊 Yes,所有工作表將按升序字母排序;點擊 No,所有工作表將按降序字母排序,根據您的需要。

A screenshot of VBA prompt for sorting Excel worksheet tabs alphabetically


 使用強大的功能按字母或字母數字順序排序工作表標籤

Kutools for Excel 提供了一個強大的功能——排序所有表,使用此功能,您可以按字母或精確排序工作表,根據標籤顏色排序工作表,或根據需要反向排序工作表標籤。

Kutools for Excel - 包含超過 300 種 Excel 必備工具。永久免費享受 AI 功能!立即下載!

1. 打開您想要排序工作表標籤的工作簿,然後點擊 Kutools Plus > 工作表 > 排序所有表,請參見截圖:

A screenshot showing Kutools Sort Sheets feature in Excel

2. 在排序所有表對話框中,選擇您需要的排序類型,例如字母排序精確排序。請參見截圖:

A screenshot of the Sort Sheets dialog

3. 然後,點擊 Ok 按鈕,所有工作表將根據您指定的排序類型進行排序。請參閱截圖:

A screenshot showing worksheets sorted alphabetically in Excel using Kutools


 使用 VBA代碼根據標籤顏色排序工作表標籤

在 Excel 中,我們通常會按字母順序排序工作表標籤,但您是否嘗試過根據標籤顏色排序工作表標籤?以下的 VBA代碼可能有助於解決此問題,請按以下步驟操作:

1. 按住 ALT + F11 鍵以開啟 Microsoft Visual Basic for Applications 視窗。

2. 點擊 插入 > 模組,然後將以下宏粘貼到模組視窗中。

VBA:根據工作表標籤(B)顏色排序所有表

Sub SortWorkBookByColor()
'Updateby20140624
Dim xArray1() As Long
Dim xArray2() As String
Dim n As Integer
Application.ScreenUpdating = False
If Val(Application.Version) >= 10 Then
    For i = 1 To Application.ActiveWorkbook.Worksheets.Count
        If Application.ActiveWorkbook.Worksheets(i).Visible = -1 Then
            n = n + 1
            ReDim Preserve xArray1(1 To n)
            ReDim Preserve xArray2(1 To n)
            xArray1(n) = Application.ActiveWorkbook.Worksheets(i).Tab.Color
            xArray2(n) = Application.ActiveWorkbook.Worksheets(i).Name
        End If
    Next
    For i = 1 To n
        For j = i To n
            If xArray1(j) < xArray1(i) Then
                temp = xArray2(i)
                xArray2(i) = xArray2(j)
                xArray2(j) = temp
                temp = xArray1(i)
                xArray1(i) = xArray1(j)
                xArray1(j) = temp
            End If
        Next
    Next
    For i = n To 1 Step -1
        Application.ActiveWorkbook.Worksheets(CStr(xArray2(i))).Move after:=Application.ActiveWorkbook.Worksheets(Application.ActiveWorkbook.Worksheets.Count)
    Next
End If
Application.ScreenUpdating = True
End Sub

3. 然後,按下 F5 鍵來執行此代碼,具有相同標籤顏色的工作表將會被一起排序。請參閱截圖:

A screenshot showing worksheets sorted by tab color in Excel after VBA execution


 使用一個驚人的功能根據標籤顏色排序工作表標籤

使用 Kutools for Excel排序所有表功能,您也可以快速輕鬆地按顏色排序工作表標籤。

Kutools for Excel 提供超過 300 種進階功能,簡化複雜任務,提升創造力與效率。 結合 AI 能力,Kutools 能夠精準自動化任務,讓數據管理變得輕而易舉。Kutools for Excel 的詳細資訊...免費試用...

1. 點擊 Kutools Plus > 工作表 > 排序所有表,進入排序所有表對話框,在排序所有表對話框中,點擊右側窗格的顏色排序按鈕,請參見截圖:

A screenshot showing Kutools Color Sort option for sorting worksheet tabs by color

2. 然後,點擊確定按鈕,具有相同標籤顏色的工作表將會如以下截圖所示地排列在一起:

A screenshot showing sorted worksheet tabs by color in Excel using Kutools

最佳辦公效率工具

🤖 Kutools AI 助手:基於智能執行方式革新數據分析:智能執行   |  生成代碼  |  創建自訂公式  |  分析數據並生成圖表  |  調用 Kutools 函數
熱門功能查找、標記重複值或識別重複項   |  刪除空行   |  合併列或單元格而不丟失數據   |   四捨五入無需公式 ...
高級 LOOKUP多條件 VLookup    多值 VLookup  |   多表查找   |   模糊查找 ....
高級下拉列表快速創建下拉列表   |  依賴下拉列表   |  多選下拉列表 ....
列管理器添加特定數量的列  |  移動列  |  切換隱藏列的可見狀態  |  比較區域和列 ...
特色功能網格聚焦   |  設計檢視   |   增強編輯欄    工作簿與工作表管理器   |  資源庫(自動文本)   |  日期提取器   |  合併資料   |  加密/解密儲存格    按列表發送電子郵件   |  超級篩選   |   特殊篩選(篩選粗體/斜體/刪除線...) ...
頂級 15 種工具集12 個文本工具添加文本刪除特定字符、...)   |   50+ 圖表 類型甘特圖、...)   |   40+ 實用 公式基於生日計算年齡、...)   |   19 個插入工具插入QR碼根據路徑插入圖片、...)   |   12 個轉換工具金額轉大寫匯率轉換、...)   |   7 個合併與分割工具高級合併行分割儲存格、...)   |   ... 還有更多

使用 Kutools for Excel 提升您的 Excel 技巧,體驗前所未有的高效。 Kutools for Excel 提供超過 300 種高級功能來提高生產力並節省時間。  點擊這裡獲取您最需要的功能...


Office Tab 將標籤式界面帶到 Office,讓您的工作更加輕鬆

  • 在 Word、Excel、PowerPoint、Publisher、Access、Visio 和 Project 中啟用標籤式編輯和閱讀。
  • 在同一窗口的新標籤中打開和創建多個文檔,而不是在新窗口中。
  • 將您的生產力提高 50%,每天為您減少數百次鼠標點擊!