Excel 排序:按文本、日期、数字或颜色对数据进行排序
在 Excel 中对数据进行排序是一项常见而简单的操作,能帮您根据所选的排序方式快速重新排列数据。借助内置的排序功能,您可以轻松对一个或多个列中的数字、文本、日期和时间进行排序;还可以按自定义列表或单元格格式(如字体颜色、背景色或图标)快速完成排序。
除了这些基础排序功能外,日常工作中您可能还需要更多实用且灵活的排序方式。本教程将为您介绍 Excel 中应对各类场景的多样化排序方法。
在 Excel 中访问排序选项
Excel 提供了多种便捷方式,助您轻松访问排序功能及其选项。
1.1 功能区中的排序按钮功能区
最快捷地应用排序功能的方式,是使用功能区中的排序按钮。
单击要排序列中的任意单元格,然后切换到数据选项卡,在排序和筛选部分中,点击升序或 Z 到 A 排序按钮,即可按字母顺序升序或降序排列数据。参见下图:

注意:如果数据区域中存在空白行,应用这些按钮后,仅所选单元格上方或下方、位于空白行之间的数据区域会被排序。
1.2 排序对话框
在排序和筛选组的数据选项卡中,还有另一个排序按钮,参见下图:

单击此排序按钮后,将弹出如下图所示的排序对话框:

然后,在排序对话框中,您可根据需要选择相应的规则对数据进行排序。
提示:您也可以使用快捷键打开此排序对话框——只需在键盘上依次按下 Alt + A + S + S 键即可!
1.3 筛选菜单中的排序选项
如果您的数据区域已应用筛选器,排序选项也会出现在筛选菜单中。只需单击任意列的筛选图标,即可在展开的列表中看到排序选项,如下图所示:

注意:这些排序选项会根据列中的数据类型动态变化——若列为文本,将显示升序和 Z 到 A 排序;若列为数字,将显示按小到大排序和按大到小排序;若列为日期,将显示从旧到新排序和从新到旧排序。
1.4 右键单击排序选项
在 Excel 中,您还可以使用右键单击排序选项快速轻松地对数据进行排序:右键单击包含要排序值的列中的任意单元格,在上下文菜单中即可看到六个可用的排序选项,请选择您需要的选项,参见截图:

排序的基本用法
此 Excel 排序功能可助您轻松完成多种基础排序操作,例如按升序或降序对数字、文本字符串及日期进行排序,或依据字体颜色与单元格背景色对数据进行整理。本节将为您介绍该功能的核心用法。
2.1 按文本、数字或日期对数据进行排序
要按升序或降序对基于文本、数字或日期的数据范围进行排序,请按以下步骤操作:
1. 选择要排序的数据区域,然后单击数据> 排序,参见截图:

2. 在排序对话框中执行以下操作:
- 在列部分,选择要基于其进行排序的列名;
- 在排序依据部分,选择单元格值选项;
- 在排序顺序部分中,指定所需的排序方式。(对文本字符串排序,请选择 )A 到 Z或 Z 到 A;对数字列表排序,请选择小到大或大到小;对日期单元格排序,请选择从旧到新或从新到旧。)
- 提示:如果您的数据包含标题,请务必勾选包含标题选项;若无标题,请取消勾选该选项。

3. 然后,单击确定按钮,所选数据将立即按照您指定的列进行排序。
2.2 按单元格颜色、字体颜色或单元格图标对数据进行排序
若想依据单元格颜色、字体颜色或条件格式图标对数据区域进行排序,排序功能可助您快速完成。
假设您有一个已按单元格颜色格式化的数据区域(如下方截图所示),如果需要根据单元格颜色重新排列数据,例如将浅红色行置于顶部,其次是浅黄色和浅蓝色行,要按单元格颜色对行进行排序,请按以下操作:

1. 选择要按单元格颜色排序的数据区域,然后单击数据> 排序,即可打开排序对话框。
2. 在排序对话框中,执行以下操作:
2.1)将第一种单元格颜色设置在顶部,如下所示:
- 在列部分中,选择名称或其他包含着色单元格的列。本示例中所有列均包含着色单元格,您可任选一列。
- 在排序依据部分中,选择请选择单元格颜色选项;
- 在排序顺序部分中,选择一种您希望置于顶部或底部的单元格颜色;
2.2)然后,单击添加条件按钮,添加第二级及其他规则级别,并重复上述步骤设置相应单元格颜色。
- 提示:如果您的数据包含标题,请务必勾选包含标题选项;若无标题,请取消勾选该选项。

3. 完成设置后,单击确定按钮,数据区域将按您指定的单元格颜色排序,效果如图所示:

提示:按照上述步骤,在排序对话框中选择字体颜色或使用条件格式图标,即可按字体颜色或单元格图标对数据进行排序。
2.3 按多列对数据进行排序
如果您拥有如下方截图所示的大型数据集,并希望执行多级排序以更清晰地查看数据——例如先按“区域”列排序,再按“州”列排序,最后按“销售额”列排序——该如何在 Excel 中实现?

要按多个列对数据进行排序,请按以下步骤操作:
1. 选择要排序的数据范围,然后单击数据> 排序,即可打开排序对话框。
2. 在排序对话框中,单击添加条件按钮两次(因为需按三列排序)。随后,列表框中将新增两个然后依据规则级别:
提示:如果您的数据包含标题,请务必选中包含标题选项;若不含标题,请取消选中该选项。

3. 在主要关键字和然后依据下拉列表中,选择要排序的列名,然后分别为每个选定的列,在排序依据部分的单元格值中选择“单元格值”,最后按需设置排序顺序。

4. 然后,单击确定,即可获得如下方截图所示的排序结果:

2.4 根据自定义列表对数据进行排序
除了按字母或数字顺序排序外,此功能还支持自定义列表排序。例如,您可以按自定义的“状态”(如“未开始”、“进行中”、“已完成”)对下方数据区域进行排序。接下来,我将为您介绍如何实现此类排序。

1. 选择要排序的数据区域,然后单击数据> 排序,即可打开排序对话框。
2. 在排序对话框中,从列部分选择要排序的列,然后在排序依据部分选择“单元格值”,最后在次序部分单击自定义列表选项,参见截图:
提示:如果您的数据包含标题,请确保选中包含标题选项。如果您的数据不含标题,请取消选中该选项。

3. 随后将弹出一个自定义列表框,请按以下步骤操作:
- 单击新建列表位于自定义列表框中;
- 请按您希望排序的顺序,将文本字符串输入到列表项框中;(输入时,请按 )Enter 键分隔各项。)
- 最后,单击添加按钮,新列表将立即出现在自定义列表框中。

4. 然后,单击确定按钮,返回到排序对话框。新创建的自定义列表项目现已显示在次序下拉列表中。

5. 然后,单击确定按钮关闭对话框,数据区域将按您定义的自定义列表完成排序,效果如截图所示:

2.5 按行对数据进行排序(横向排序)
通常,您会按列(垂直方向)从上到下对数据表进行排序,但有时也可能希望根据行值(即从左到右)进行排序。例如,在下方的数据区域中,我希望依据“姓名”行中的值对其进行排序。

在这种情况下,排序功能已内置支持按行排序。请按以下步骤操作:
1. 选择要排序的数据区域(不含标题),然后点击数据> 排序,即可打开排序对话框。
2. 在弹出的排序对话框中,单击选项按钮,在排序选项对话框中选择按从左到右排序选项,参见截图:

3. 单击确定返回“排序”对话框。在行部分中,指定要基于其进行数据排序的行号;在排序依据部分中选择单元格值;最后,在次序部分中选择所需的排序顺序,如下图所示:

4. 然后,单击确定,您的数据将按如下截图所示完成排序:

2.6 按区分大小写顺序对数据进行排序
通常,数据排序不会区分大小写(如第一张截图所示)。但如果您希望按区分大小写的顺序排序(如第二张截图所示),该如何在 Excel 中实现?

要在 Excel 中执行区分大小写排序,请按以下步骤操作:
1 请选择要排序的数据区域,然后单击。数据> 排序 以打开排序对话框。
2. 在排序对话框中,于列部分指定要基于其进行数据排序的列名,在排序依据部分选择单元格值,并在次序部分选择所需的排序顺序,如下图所示:
提示:若您的数据包含标题,请务必勾选包含标题选项;若不含标题,请取消勾选。

3. 继续单击此对话框中的选项按钮,在弹出的排序选项提示框中勾选区分大小写选项,如下图所示:

4. 单击确定> 确定 关闭对话框,数据将按区分大小写的顺序排序:当文本相同时,小写字符串排在全大写之前。如下图所示:

排序的高级用法
在日常工作中,您可能会遇到更加复杂、实用且具体的排序需求。本节将为您介绍 Excel 中多种类型的排序任务。
3.1 按出现频率对数据进行排序
假设您在一列中有一组数据,现在希望按数据出现频率的降序对该列进行排序(如下图所示)。接下来,我将为您介绍两种实现此操作的方法。

使用辅助列按频率对数据进行排序
在 Excel 中,无法直接按文本出现次数排序。您可以通过创建一个辅助公式来统计每条文本的出现频率,再依据该辅助列进行排序,即可轻松实现所需效果。
1. 在紧邻原始数据的空白单元格(例如 B2)中输入以下公式,然后向下拖动填充柄,即可将公式应用到其他单元格,如下图所示:
=COUNTIF($A$2:$A$16,A2)
注意:在上述公式中,A2:A16 是您要按频率排序的数据列表,而 A2 是该列表中的首个数据。

2. 然后保持选中公式单元格,单击数据选项卡中的升序或 Z 到 A 排序(根据需要选择)。在弹出的排序警告提示框中,选择扩展选定区域,如下图所示:

3. 然后单击排序按钮,原始列将按频率排序,如下图所示:

1. 获得结果后,您可按需删除辅助列。
2. 如果某些文本字符串出现次数相同,相同的文本可能不会被排在一起。此时,您应先打开排序对话框,按辅助列排序后再按文本排序,如下图所示:
使用便捷功能按频率对数据进行排序
如果您已安装 Kutools for Excel,即可借助其高级排序功能,无需任何辅助列,快速轻松地按出现频率对数据进行排序。
1. 选择要排序的数据列表,然后点击 KUTOOLS PLUS > 排序 > 高级排序,如下图所示:

2. 在高级排序对话框中,从列部分选择要排序的列,然后在排序依据下拉列表中选择频率,最后在次序部分指定排序顺序,如下图所示:
提示:如果您的数据包含标题,请确保已勾选包含标题选项;如果数据不含标题,请取消勾选。

3. 然后单击确定按钮,数据列表将立即按出现次数排序,如下图所示:

3.2 按字符长度对数据进行排序
如果您有一组包含不同长度文本字符串的数据,不妨按字符长度对数据进行排序,让列看起来更加整齐美观。本节将为您介绍如何按字符数量对数据进行排序。
使用辅助列按字符长度对数据进行排序
要按字符长度对列进行排序,请使用 LEN 函数计算每个单元格中的字符数,然后应用排序功能对数据列表进行排序。请按以下步骤操作:
1. 在紧邻原始数据的空白单元格(例如 B2)中输入公式 =LEN(A2),然后向下拖动填充柄,将公式快速应用到其他单元格,如下图所示:

2. 然后保持选中公式单元格,再单击数据> 升序 或 Z 到 A 排序(根据需要选择)。在弹出的排序警告提示框中,选择扩展选定区域,如下图所示:

3. 然后单击排序按钮,字符串将按字符长度排序。如有需要,可删除辅助列 B。如下图所示:

使用简单选项按字符长度对数据进行排序
Kutools for Excel 的高级排序工具可助您快速轻松地按字符数量对数据进行排序。
1. 选择要排序的数据列表,然后单击 KUTOOLS PLUS > 排序 > 高级排序。
2. 在高级排序对话框中,先在列部分选择要排序的列,然后从排序依据下拉列表中选择文本长度,最后在顺序部分指定所需的排序顺序。参见截图:
提示:如果您的数据包含标题,请确保已勾选包含标题;如果数据不含标题,请取消勾选。

3. 然后,单击确定按钮,列表中的文本字符串将按字符长度排序,如下图所示:

3.3 按姓氏对全名排序
对全名列表进行排序时,Excel 默认会按姓名的首字符排序,但如果您希望按姓氏排序,该怎么办?下面为您介绍几种在 Excel 中轻松实现按姓氏排序全名的实用技巧。
使用辅助列按姓氏对全名排序
要根据姓氏对全名进行排序,请先将姓氏提取到新列中,再使用排序功能按姓氏以字母顺序排列全名。请按以下步骤操作:
1. 在原始数据旁边的空白单元格(例如 B2)中输入或复制下方公式,然后向下拖动填充柄,即可将该公式应用到其他单元格,参见截图:
=RIGHT(A2,LEN(A2)-FIND("@",SUBSTITUTE(A2," ","@",LEN(A2)-LEN(SUBSTITUTE(A2," ","")))))

2. 继续选中这些公式单元格,然后单击数据> 升序 或 Z 到 A 排序(根据需要选择)。在弹出的排序警告提示框中,选择扩展选定区域,参见截图:

3. 然后,单击排序按钮,即可按姓氏对全名进行排序。完成后,您可根据需要删除辅助列。参见截图:

使用快捷方法按姓氏对全名排序
Kutools for Excel 的高级排序功能可以帮您轻松实现按姓氏对全名进行排序,无需使用任何公式,即使您不熟悉公式也能快速上手。
1. 选择要排序的全名单元格,然后点击 KUTOOLS PLUS > 排序 > 高级排序。
2. 在高级排序对话框中,先在列部分选择要排序的列,然后从姓氏的排序依据下拉列表中选择相应选项,最后在顺序部分指定所需的排序顺序。参见截图:
提示:如果您的数据包含标题,请务必勾选包含标题选项;若不含标题,请取消勾选。

3. 然后,单击确定按钮,全名列将立即按姓氏完成排序。

3.4 按域名对邮箱地址排序
如果您有一份邮箱地址列表,希望按域名而非地址的首字母进行排序,该如何在 Excel 中实现?本节将介绍几种快速按域名对邮箱地址进行排序的方法。
使用辅助列按域名对邮箱地址排序
在这里,您可以创建一个公式,将邮箱地址的域名提取到另一列中,然后基于新的域名列对原始邮箱地址进行排序。
1. 在邮箱地址旁的空白单元格中输入以下公式(本例中为 C2 单元格),然后向下拖动填充柄,将公式应用到所需范围,即可自动提取所有邮箱地址的域名。效果如截图所示:
=RIGHT(B2,LEN(B2)-FIND("@",B2))

2. 保持选中公式单元格,然后单击数据> 升序 或 Z 到 A 排序(根据需要选择)。在排序警告对话框中,勾选扩展选定区域,参见截图:

3. 然后,单击排序按钮,即可按您指定的升序或降序对邮箱地址域名进行排序。

4. 排序完成后,您可根据需要删除辅助列。
通过几次单击按域名对邮箱地址排序
如果您已安装 Kutools for Excel,只需几次单击,即可借助其高级排序功能,按域名对邮箱地址进行字母顺序排序。
1. 选择要排序的整个数据区域,然后点击 KUTOOLS PLUS > 排序 > 高级排序。
2. 在高级排序对话框中,于列部分选择要排序的列,然后从排序依据下拉列表中选择邮箱域名,最后在顺序部分指定所需的排序顺序。参见截图:
提示:如果您的数据包含标题,请确保已勾选包含标题选项:如果您的数据不含标题,请取消勾选。

3. 单击确定后,数据区域已按邮箱地址域名完成排序,如下图所示:

3.5 对一列进行排序以匹配另一列
如果您有两列数据内容完全相同或几乎相同,但顺序不同,现在可能需要对这两列进行排序,使相同值在两列中对齐到同一行。本节将介绍此类排序的两种情况。
对包含完全相同项的两列进行排序以匹配
例如,我有两列数据,其中包含相同的项目但顺序不同;现在我希望对第二列进行排序,使其与第一列的顺序完全匹配,如下图所示。

1. 在原始数据旁的空白单元格中输入下方公式,然后向下拖动填充柄,将该公式应用到列表中的所有单元格,即可返回 B 列中每个值在 A 列中的位置,参见截图:
=MATCH(B2,$A$2:$A$10,0)

2. 然后,选中 B 列及新的辅助列,单击数据> 排序 以打开排序对话框,并在其中执行以下操作:
- 从列部分中选择您要基于其排序数据的辅助列;
- 然后,在单元格值的排序依据部分中进行选择;
- 最后,在排序顺序部分中选择小到大的相应选项。

3. 然后,单击 OK 按钮,即可获得如下方截图所示的两列完全匹配的数据。如有需要,您可删除公式列。

对包含不完全相同项的两列进行排序以匹配
有时,两列中的项目可能不完全相同。例如,我希望对第二列中的数据进行排序,使其与第一列中的数据匹配,从而让相同的值在相同的行上对齐,如下方截图所示。

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)))

3.6 从数据列表中排序并提取唯一值
如果您有一个包含重复项的值列表,现在只想提取唯一值并按字母顺序排序(如下方截图所示),我将介绍一些用于处理此类排序的公式。

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 是输入公式所在单元格的上方单元格。请根据实际需求修改这些引用。

2. 然后拖动填充柄提取值,直至出现空白单元格,所有唯一值将自动按升序提取并排序,见截图:

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)))

3.7 同时独立对多行或多列进行排序
我们通常很容易根据某一行或某一列对数据区域进行排序,但有时您可能希望独立地对区域中的每一行或每一列进行字母排序。如何在 Excel 中完成此任务?
分别对多行进行排序
假设您有一组数据,需要像下方截图所示那样对每一行进行字母重新排列。为解决此问题,以下是两个快速技巧。

使用公式一次性独立排序多行
1. 将行标签复制到其他位置,即可获得排序后的结果。
2. 然后,在空白单元格(H2)中复制或输入下方公式,并同时按下 Ctrl + Shift + Enter 键,即可获取第一个结果,见截图:
=INDEX($B2:$E2, MATCH(COLUMNS($B2:B2), COUNTIF($B2:$E2, "<="&$B2:$E2), 0))

3. 然后,选中公式单元格 H2,向右拖动填充柄,将公式复制到第一行的其他单元格(本例中拖至 K2 单元格),见截图:

4. 继续选中第一行中的公式单元格(H2:K2),向下拖动填充柄,即可将公式复制到其他行。现在,每行的值均已按升序独立排序。

使用 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 键运行此代码,每行数据将立即按升序排序,效果如截图所示:

分别对多列进行排序
要对每列数据分别进行排序,以下两种方法可为您提供帮助。
使用公式一次性独立排序多列
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))

3. 继续选中第一行中的公式单元格(F3:F6),向右拖动填充柄,即可将公式复制到其他列。现在,每列的值均已按升序独立排序,如下方截图所示:

使用 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 键运行此代码,将弹出提示框,请选择您要排序的数据区域,见截图:

4. 然后,单击 OK,即可快速对每列进行独立排序。

3.8 在 Excel 中随机排序数据
我们通常会按升序或降序对数据进行字母排序,但您是否尝试过以随机选择排序数据?在本节中,我将介绍如何以随机顺序打乱一系列单元格。
使用辅助列对一列数据进行随机排序
通常,您可以使用 RAND 函数生成随机数,然后基于此随机列表对数据进行排序。请按以下方式操作:
1. 在数据旁的空白单元格中输入公式:=RAND(),然后向下拖动填充柄,即可生成一列随机数,如下方截图所示:

2. 保持选中包含公式的单元格,然后单击数据选项卡中的升序或降序排序(根据需要选择)。在弹出的排序警告提示框中,选择扩展选定区域,见截图:

3. 然后,单击排序按钮,数据列表将立即被打乱,详见截图:

使用强大功能对单元格、行或列进行随机排序
Kutools for Excel 的随机排序功能强大,可让您轻松打乱单元格选区中的数据——无论是选定区域内的每列或每行,还是一次性随机打乱整行或整列。
1. 选择要随机排序的数据区域,然后点击 KUTOOLS PLUS > 排序 > 随机排序。见截图:

2. 在随机排序或选择对话框的排序选项卡下,选择以下任一所需选项:
- 整行:随机打乱整行中的内容。
- 整列排序:在整列排序中随机打乱顺序。
- 排序在每一行:分别对每一行进行打乱排序。
- 排序在每一列:可对每一列分别进行打乱排序。
- 排序所有单元格:可随机打乱所选区域中的所有单元格。

3. 然后,单击确定按钮,数据将立即完成随机化。
3.9 根据月份、日期或月份和日期对日期列表进行排序
在 Excel 中对日期进行排序时,默认情况下“排序”功能会按年、月、日对日期列表进行排序。但在某些情况下,您可能需要忽略年份,仅按月份、日期或月份和日期对日期进行排列。如何在 Excel 中解决此问题?
使用辅助列按月份或日期对日期列表进行排序
若要仅根据月份或日期对日期进行排序,您可以从日期中提取月份或日期数字,然后根据提取出的月份或日期数字列对日期进行排序。
1. 请在数据旁的空白单元格中输入以下公式,然后向下拖动填充柄,将公式快速复制到其他单元格,参见截图:
=MONTH(B2) (extract month number)
=DAY(B2)(提取日期数字)

2. 返回月份或日期数字后,请保持选中公式单元格,然后单击数据> 升序 或降序排序(根据需要)。在弹出的排序警告提示框中,选择扩展选定区域,参见截图:

3. 然后,单击排序按钮,即可按月份对日期进行排序,忽略年份和具体日期。参见截图:

通过几次单击按月份或日期对日期列表进行排序
如果您已安装 Kutools for Excel,只需几次单击,即可借助其高级排序功能,按仅月份或仅日期对日期列表进行排序。
Kutools for Excel——包含 300 多个 Excel 必备工具,并永久免费畅享 AI 功能!立即下载!
1. 选择您要排序的数据区域,然后单击 KUTOOLS PLUS > 排序 > 高级排序。
2. 在高级排序对话框中,于列部分选择要排序的列,从月份或日期下拉列表中选择排序依据,并在顺序部分指定所需的排序顺序。
提示:如果您的数据包含标题,请务必勾选包含标题选项;若无标题,请取消勾选。

3. 然后,单击确定按钮,数据将按您指定的月份或日期排序,同时忽略年份,参见截图:

使用辅助列按月份和日期对日期列表进行排序
现在,如果您需要仅根据月份和日期(不含年份)对日期列表进行排序,TEXT 函数可帮助将日期转换为指定格式的文本字符串,然后按需应用“排序”功能。
1. 在数据旁的空白单元格中输入以下公式,并将公式向下复制至数据末尾,即可将月份和日期以文本字符串形式提取出来,如下图所示:
=TEXT(B2,"MMDD")

2. 保持选中公式单元格,然后单击数据> 升序 或降序排序(根据需要)。在弹出的排序警告提示框中,选择扩展选定区域,参见截图:

3. 然后,单击排序按钮,即可按月份和日期对数据进行排序。

3.10 根据周内天统计对日期列表进行排序
要根据周内天统计对日期列表进行排序,即按周一至周日或周日至周六对日期进行排序。本节将介绍两种在 Excel 中完成此任务的方法。
使用辅助列按周内天统计对日期列表进行排序
按周内天统计对日期进行排序时,您还需要一个辅助列来返回对应于星期的数字,然后根据该辅助列对日期进行排序。
1. 请在空白单元格中输入或复制以下公式,然后向下拖动填充柄,将公式快速应用到其他单元格,参见截图:
=WEEKDAY(B2) (Start from Sunday (1) to Saturday(7))
=WEEKDAY(B2,2)(从周一(1)到周日(7))

2. 保持选中公式单元格,然后单击数据> 升序 或降序排序(根据需要),在弹出的排序警告提示框中,选择扩展选定区域,参见截图:

3. 然后,单击排序按钮,即可获得所需的排序结果,参见截图:

使用简便选项按周内天统计对日期列表进行排序
Kutools for Excel 的高级排序功能可助您无需任何辅助公式,快速解决此问题。
1. 选择您要排序的数据区域,然后单击 KUTOOLS PLUS> 排序> 高级排序。
2. 在高级排序对话框中,于列部分选择您要排序的列,从星期下拉列表中选择排序依据,并在顺序部分指定所需的排序顺序。
提示:如果您的数据包含标题,请务必勾选包含标题选项;若无标题,请取消勾选。

3. 然后,单击确定按钮,数据将按您所需的周内天统计进行排序。参见截图:

3.11 根据季度对日期列表进行排序
本节将介绍如何忽略年份,仅按季度对日期列表进行排序,并为您提供两种技巧。
使用辅助列按季度对日期列表进行排序
与上述解决方案类似,您应创建一个公式助手列,从给定日期中提取季度编号,然后基于此新的辅助列对日期进行排序。
1 请在空白单元格中输入或复制以下公式,然后向下拖动填充柄,将公式快速应用到其他单元格,效果如截图所示:
=ROUNDUP(MONTH(B2)/3,0)

2. 继续选择包含公式的单元格,然后单击数据> 升序 或 降序排序(Z 到 A)(根据需要)。在弹出的排序警告提示框中,选择扩展选定区域,参见截图:

3. 然后,单击排序按钮,即可按季度对数据区域进行排序,如下方截图所示:

使用便捷功能按季度对日期列表进行排序
如果您已安装 Kutools for Excel,只需点击几下,其高级排序功能即可帮您轻松完成此任务。
1. 选择要排序的数据区域,然后单击 KUTOOLS PLUS > 排序 > 高级排序。
2. 在高级排序对话框中,于列部分选择要排序的列,在排序依据下拉列表中选择“季度”,最后在顺序部分指定所需的排序顺序。
提示:如果您的数据包含标题,请务必选中包含标题选项;若不含标题,请取消选中该选项。

3. 最后,单击确定按钮,所选区域将按您所需的季度顺序完成排序。
3.12 根据月份名称或星期名称对数据进行排序
如果您有一列以文本形式列出的月份名称,直接排序会按字母顺序排列,而非按从一月到十二月的自然月份顺序。若需按一月至十二月的顺序排序,可借助排序功能中的自定义排序来实现。
1. 选择要按月份名称排序的数据区域,然后单击数据> 排序,即可打开排序对话框。
2. 在排序对话框中,于列部分选择包含月份名称的列,在排序依据部分选择单元格值,最后在顺序部分选择自定义列表,参见截图:
提示:如果您的数据包含标题,请确保选中包含标题选项;如果数据不含标题,请取消选中该选项。

3. 随后,在弹出的自定义列表对话框中,根据工作表中月份的显示方式,选择完整的月份名称(January、February、March……)或缩写形式(Jan、Feb、Mar……),参见截图:

4. 然后,单击确定> 确定 关闭对话框,您的数据将按月份名称以时间顺序完成排序,如下方截图所示:

提示:若要按星期名称排序,请在自定义列表对话框中选择完整的星期名称(Sunday、Monday、Tuesday……)或缩写形式(Sun、Mon、Tue……),以满足您的需求。
3.13 根据奇数或偶数对数据进行排序
在 Excel 中按升序或降序对数字进行排序很容易,但您是否尝试过将列表中的数字按奇数到偶数(或偶数到奇数)的顺序排序?本节将介绍几种实现此操作的方法。
使用辅助列按奇数或偶数对数据进行排序
要按奇数或偶数对数字列表进行排序,您需要先创建一个公式来识别奇偶性,然后应用排序功能。
1. 在数字列表旁的空白单元格中输入公式 =ISODD(A2),然后向下拖动以将公式复制到其他单元格,即可看到 TRUE 和 FALSE 值:TRUE 表示奇数,FALSE 表示偶数。

2. 继续选择包含公式的单元格,然后单击数据> 升序 或 降序排序(Z 到 A)(根据需要),在弹出的排序警告提示框中,选择扩展选定区域,参见截图:

3. 然后单击排序按钮,所有偶数将自动排在一起,随后是奇数(或反之),效果如截图所示:

使用实用功能按奇数或偶数对数据进行排序
Kutools for Excel 的高级排序功能,助您快速将数字按奇数到偶数(或反之)的顺序排序。
1. 选择要排序的数据区域,然后单击 KUTOOLS PLUS> 排序> 高级排序。
2. 在高级排序对话框中,点击列部分下要排序的列,然后在奇偶数的排序依据部分中选择“奇偶性”,并指定排序顺序(A 到 Z表示从偶数到奇数排序,Z 到 A表示从奇数到偶数排序),参见截图:
提示:如果您的数据包含标题,请确保选中包含标题选项;如果数据不含标题,请取消选中该选项。

3. 然后点击确定按钮,即可获得如下结果:

3.14 根据绝对值对数据进行排序
如果某一列中同时包含正数和负数,Excel 默认会按升序或降序进行排序。但有时您可能希望忽略负号,按绝对值大小排序。如何在 Excel 中实现这一操作?
使用辅助列按绝对值对数据进行排序
要按绝对值对数字进行排序,通常应先创建一个公式将所有数值转换为绝对值,然后再使用排序功能对数字进行排序。
1. 在相邻的空白单元格(例如 B2)中输入公式 =ABS(A2),然后拖动填充柄将公式复制到其他单元格,即可将所有数值转换为绝对值:

2. 保持选中公式单元格,然后单击数据> 升序 或 从 Z 到 A 排序(根据需要)。在弹出的排序警告提示框中,选择扩展选定区域,如截图所示:

3. 然后点击排序按钮,所有数字将按绝对值排序,如下方截图所示:

使用便捷选项按绝对值对数据进行排序
如果您厌倦了创建辅助列,不妨试试 Kutools for Excel 的高级排序功能,即可直接、轻松地按绝对值对数字进行排序!
Kutools for Excel——包含 300 多个 Excel 必备工具,并永久免费畅享 AI 功能!立即下载!
1. 选择要排序的数据区域,然后单击 KUTOOLS PLUS> 排序> 高级排序。
2. 在高级排序对话框中,单击列部分下要排序的列,然后在绝对值下的排序依据部分中选择“绝对值”,并指定排序顺序,如截图所示:
提示:若数据包含标题,请务必勾选“包含标题”;若不含标题,请取消勾选。

3. 然后单击确定,所有数字将按从小到大或从大到小的顺序排序(忽略负号)。
在输入或更改数据时自动对数据进行排序
Excel 中的排序功能不是动态的,每次更改数据或添加新数据后,您都必须重新排序。本节将介绍如何在向数据区域中添加新值时自动对数据进行排序。
4.1 使用公式自动对列中的数值进行排序
要自动按升序或降序对数字列表进行排序,您可以使用基于 LARGE、SMALL 和 ROW 函数的公式。
1. 请在源数据旁的空白单元格中输入或复制下方公式,然后向下拖动填充柄至需应用此公式的单元格,数字将按从小到大的顺序排列,如截图所示:
=IFERROR(SMALL($A$2:$A$100,ROWS(B$2:B2)),"")
注意:在此公式中,A2:A100 是您要自动排序的数字列表(包含若干空单元格,便于添加新条目),B2 是输入公式的单元格。

2. 现在,当您更改源数据或输入新数据时,排序列表将自动刷新,如下方演示所示:

提示:要自动按降序对数字进行排序,请使用以下公式:
=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)),"")

2. 从现在起,当在 A 列中输入或修改原始数据时,B 列中的文本字符串将自动按升序排序,如下方演示所示:

提示:要自动按降序对文本字符串进行排序,请使用以下公式(请记得按 )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 为数据列表的首个单元格。

2. 保存并关闭代码窗口。此后,当您在 A 列中输入新数据或修改原有数据时,数据将自动按升序排序,如下方演示所示:

提示:如果您希望按降序对数据列表进行排序,请使用以下代码:
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),然后向下拖动填充柄将公式复制到其他单元格,即可按字母顺序对所有单元格中的文本值进行排序,效果如截图所示:

按字母顺序对单元格内由分隔符分隔的文本字符串进行排序
如果单元格中包含由特定分隔符分隔的多个单词,以下用户自定义函数可助您轻松实现单元格内内容的字母顺序排序。
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),然后向下拖动填充柄将公式复制到其他单元格,即可按字母顺序对所有单元格中的文本字符串进行排序,如截图所示:
注意:如果您的文本字符串使用其他分隔符分隔,只需将公式中的逗号替换为您自己的分隔符即可。

5.2 反转/翻转列或行中数据的顺序
有时,您可能需要将垂直数据区域中的数据上下颠倒,或将水平数据区域中的数据从左到右反转。本节将为您介绍三种在 Excel 中完成此任务的方法。
使用公式反转/翻转列或行中数据的顺序
以下公式可帮助您翻转列或行中数据的顺序,请按如下操作:
翻转列中数据的顺序
请在要放置结果的空白单元格中输入或复制以下公式,然后向下拖动填充柄至相应单元格,即可按相反顺序返回单元格值,见截图:
=OFFSET($A$10,-(ROW(A1)-1),0)
注意:在上述公式中,A1 是该列的首个单元格,A10 是该列的最后一个单元格。

翻转行中数据的顺序
应用以下公式可水平翻转行中的数据顺序:
=OFFSET($A$1,,COUNTA(1:1)-COLUMN(A1),)
注意:在上述公式中,A1 是该行的第一个单元格,而 1:1 表示数据所在行的行号。如果数据位于第 10 行,则应将其更改为 10:10.
然后向右拖动填充柄至相应单元格,直到提取出所有值,您将获得水平反转后的全部数据,见截图:

使用 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 键运行此代码,将弹出提示框,要求您选择要垂直反转的数据区域,见截图:

4. 然后,单击确定按钮,数据区域将如以下截图所示垂直反转:

水平翻转选区内的数据单元格的顺序
要水平反转数据区域的顺序,请使用以下 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
运行此代码后,行中的数据将被水平反转,见截图:

只需单击一次即可反转/翻转列或行中数据的顺序
如果您已安装 Kutools for Excel,并拥有其垂直翻转选区和水平翻转选区功能,只需单击一次,即可轻松实现单元格区域的垂直与水平翻转!
垂直翻转选区内的数据单元格的顺序
1. 选择要反转的数据区域,然后点击 Kutools > 区域 > 垂直翻转选区,再选择全部或仅翻转内容,见截图:
提示:若选择全部选项,所有单元格格式将同步反转;若选择仅翻转内容,则仅反转单元格中的值。

2. 随后,数据区域将立即垂直翻转。

水平翻转选区内的数据单元格的顺序
1. 选择数据区域,然后单击 Kutools > 区域 > 水平翻转选区 > 全部 / 仅翻转内容,见截图:
提示:如果选择全部选项,所有单元格格式将同时被反转;如果选择仅翻转内容,则仅反转单元格值。

2. 随后,所选区域中的所有单元格值将立即按如下截图所示水平反转:

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 键运行此宏,在弹出的提示框中,单击是,所有工作表将按字母升序排序;单击否,所有工作表将按您所需的字母降序排序。

使用强大功能按字母/字母数字顺序对工作表标签进行排序
Kutools for Excel 的排序所有表工具提供了一项强大功能——您可按字母或字母数字顺序对工作表进行排序,也可根据标签颜色排序,或按需反转工作表标签。
Kutools for Excel——包含 300 多个 Excel 必备工具,并永久免费畅享 AI 功能!立即下载!
1. 打开需要排序工作表标签的工作簿,然后单击 KUTOOLS PLUS > 工作表 > 排序所有表,见截图:

2. 在排序所有表对话框中,点击右侧窗格中的排序类型,例如字母排序或精准排序。见截图:

3. 然后,单击确定按钮,所有工作表将按您指定的排序方式自动排序。见截图:

使用 VBA 代码按标签颜色对工作表标签进行排序
在 Excel 中按字母顺序对工作工作表标签进行排序很常见,但您是否尝试过根据标签颜色对工作表标签进行排序?以下 VBA 代码或许能帮您解决此问题,请按如下操作:
1. 按住 ALT + F11 键以打开 Microsoft Visual Basic for Applications 窗口。
2. 单击插入> 模块,然后将以下宏粘贴到模块窗口中。
VBA:根据标签颜色对所有工作表进行排序
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 键执行此代码,相同标签颜色的工作表将自动归类在一起。效果如图所示:

使用强大功能按标签颜色对工作表标签进行排序
Kutools for Excel 的排序所有表功能,还能让您快速轻松地按颜色对工作表标签进行排序。
1. 单击 Kutools Plus > 工作表 > 排序所有表,打开排序所有表对话框后,点击右侧窗格中颜色排序旁的按钮,参见截图:

2. 然后,单击确定按钮,相同标签颜色的工作表将如以下截图所示排列在一起:

最佳办公效率工具
| 🤖 | KUTOOLS AI 助手:基于以下内容革新数据分析:智能执行 | 生成代码| 创建自定义公式 | 数据分析及生成图表| 调用 Kutools Functions…… |
| 热门功能:查找、高亮或标记重复项 | 删除空白行 | 合并列或单元格且不丢失数据 | 不使用公式的四舍五入…… | |
| 高级 LOOKUP:多条件 VLookup | 多值 VLookup | 跨多工作表 VLookup | 模糊查找…… | |
| 高级下拉列表:快速创建下拉列表 | 级联下拉列表 | 多选下拉列表…… | |
| 列管理器:添加指定数量的列|移动列|切换隐藏列的可见性状态|比较区域与列…… | |
| 特色功能:网格聚焦 | 设计视图 |增强编辑栏 | 工作簿和表管理器 | 资源库(自动文本)| 日期提取 | 汇总工作表 | 加密/解密单元格 | 按列表发送邮件 | 超级筛选 | 特殊筛选(筛选粗体单元格/斜体/删除线……) ...... | |
| 精选 15 工具集:12 文本工具(添加文本,删除特定字符,……)| 50+ 图表 类型(甘特图,……)| 40+ 实用公式(基于生日计算年龄,……)| 19 插入工具(插入二维码,从路径插入图片,……)| 12 转换工具(小写金额转大写,汇率转换,……)| 7 合并和拆分工具(高级合并行,分割单元格,……)|……更多 |
使用 Kutools for Excel 大幅提升您的 Excel 技能,体验前所未有的高效。Kutools for Excel 提供 300 多项高级功能,助您提升生产力、节省时间。立即点击此处,获取您最需要的功能……
Office Tab 为 Office 带来标签式界面,让您的工作更轻松
- 在 Word、Excel、PowerPoint、Publisher、Access、Visio 和 Project 中启用标签式编辑和阅读。
- 在同一个窗口的新标签页中打开并创建多个文档,而非在新窗口中。
- 将您的工作效率提升 50%,每天减少数百次鼠标点击!
所有 Kutools 插件,一个安装程序
Kutools for Office 套件捆绑了适用于 Excel、Word、Outlook 和 PowerPoint 的插件以及 Office Tab Pro,非常适合需要跨多个 Office 应用高效协作的团队。
- 一体化套件— Excel、Word、Outlook 和 PowerPoint 插件 + Office Tab Pro
- 一个安装程序,一个许可证— 几分钟内完成设置(支持 MSI)
- 协同效果更佳— 在多个 Office 应用中实现高效协同
- 30 天全功能试用— 无需注册,无需信用卡
- 超值之选— 比单独购买插件更省钱