如何对 Excel 中的行进行分组:手动和自动方法

当 Excel 工作表包含数百甚至数千行数据时,逐行滚动查找内容会让报表变得难以阅读。通过对行进行分组,可以将相关数据整理成可展开和折叠的区域,在保留明细数据的同时,更方便地查看汇总信息。根据数据结构和使用场景,你可以手动对行进行分组,也可以使用 Excel 的自动工具、数据透视表或 Python 完成分组。

快速解答

  • 手动对少量行进行分组: 选中目标行,然后进入 数据 > 分级显示 > 组合,或按 Alt + Shift + 向右键
  • 按类别自动分组: 先按目标列对数据排序,然后使用 数据 > 分级显示 > 分类汇总
  • 创建多级行分组: 先建立最内层的子分组,再将这些子分组包含到更大的父级分组中。
  • 在数据透视表中分组: 右键点击日期、数值或已选中的字段项,然后选择 组合
  • 批量处理多个 Excel 文件: 使用 Python 将相同的行分组规则自动应用到多个工作簿。

Excel 行分组是什么?

Excel 行分组可以将相关行整理成可展开和折叠的区域,并在行号左侧添加带有加号(+)和减号(-)的分级显示控件。

例如,在销售报表中,可以将大量每日交易明细折叠起来,只保留月度汇总;需要查看具体数据时,再展开相应分组。

为了更清楚地理解行分组,可以将它与 Excel 中其他常见功能进行对比:

  • 与合并单元格相比: 合并单元格会将相邻单元格合并为一个更大的单元格;行分组则会保留每一行的独立数据,只控制明细行的显示和隐藏。
  • 与隐藏行相比: 隐藏行只是让行暂时不可见,而分组行会提供分级显示控件,方便随时展开或折叠明细。

如何在 Excel 中手动对行进行分组

对于需要精确控制分组范围的自定义数据,手动对行进行分组是最直接的方式。你可以通过功能区中的 组合 命令完成操作,也可以使用快捷键快速创建分组。

操作步骤

  1. 选择需要分组的明细行。在工作表左侧拖动选择相应的行号,如果明细数据下方有汇总行或合计行,请不要将其包含在所选范围中。

  2. 数据 选项卡的 分级显示 组中,点击 组合(也可以使用快捷键 Alt + Shift + 向右键(Windows)或 Command + Shift + K(Mac))。

    在 Excel 数据选项卡的分级显示区域中使用组合命令对所选行进行分组

完成分组后,工作表左侧会出现分级显示栏和减号(-)按钮,表示当前分组处于展开状态,可以进行折叠。

Excel 工作表中已分组的区域销售数据及左侧分级显示控件

展开/折叠按钮位置不正确怎么办?

默认情况下,Excel 会将汇总行视为位于明细行的下方。如果你的汇总行位于明细数据上方,分级显示按钮可能会出现在与报表结构不一致的位置。

可以通过以下设置进行调整:

  1. 进入 数据 选项卡。

  2. 分级显示 组的右下角,点击小箭头图标(分级显示设置按钮),打开相关设置。

    点击 Excel 分级显示区域右下角的小箭头打开分级显示设置

  3. 取消勾选 汇总行显示在明细数据的下方,然后点击 确定

    Excel 分级显示设置中已取消勾选汇总行显示在明细数据的下方

设置完成后,展开和折叠按钮的位置会与顶部汇总行的布局相匹配。

如何在 Excel 中自动对行进行分组

对于结构较为规则的大型数据集,逐段手动选择行进行分组会比较繁琐。Excel 提供了两种常用的自动分组方式:分类汇总(Subtotal)自动建立分级显示(Auto Outline)

方法 1:使用分类汇总自动分组

如果需要按某一类别自动划分数据,同时插入求和、平均值等汇总行,可以使用 分类汇总。它可以在生成汇总结果的同时创建可展开和折叠的分级显示结构。

操作步骤

  1. 按用于分组的列对连续数据区域进行排序。例如,如果要按 区域 分组,应先按 区域 列排序,让相同区域的数据排列在一起。

  2. 点击数据区域中的任意单元格,然后进入 数据 > 分级显示 > 分类汇总

    Excel 数据选项卡中分级显示区域的分类汇总命令

  3. 分类汇总 对话框中进行设置:

    • 分类字段: 选择用于分组的列,例如 区域
    • 汇总方式: 选择需要使用的计算方式,例如 求和
    • 选定汇总项: 勾选需要计算的数值列,例如 销售额

    Excel 分类汇总对话框按区域分组并对销售额求和

  4. 点击 确定。Excel 会自动插入分类汇总行,并在工作表左侧生成多级分级显示按钮。

    使用分类汇总后 Excel 工作表中显示区域小计和多级分级显示按钮

⚠️ 注意:表格限制

通过 Ctrl + T 创建的 Excel 表格中无法直接使用 分类汇总。如果当前数据已经格式化为表格,可以先进入 表设计 > 转换为区域,将其转换为普通单元格区域;如果希望继续保留表格结构,也可以改用数据透视表进行汇总。

方法 2:使用自动建立分级显示

如果工作表中已经存在汇总行,或者明细数据上方/下方已经包含合计公式,可以使用 自动建立分级显示 来自动生成行分组。

操作步骤

  1. 确保汇总行中包含能够对应明细数据的 Excel 公式,例如 =SUM()=AVERAGE()

  2. 点击数据区域中的任意单元格,进入 数据 选项卡,点击 组合 旁的下拉箭头,然后选择 自动建立分级显示

    Excel 数据选项卡的组合菜单中显示自动建立分级显示选项

⚡ 提示:

自动建立分级显示依赖能够反映明细与汇总关系的公式(例如 =SUM())。如果工作表中只有普通文本标签或静态值,Excel 通常无法判断层级关系。如果无法自动识别结构,请检查汇总公式,或改为手动创建分组。

如何在 Excel 中创建多级(嵌套)行分组

当数据包含明显的层级结构(例如 年份 > 季度 > 月份)时,单个分组级别往往不够。Excel 支持将行分组嵌套在其他分组中,最多可创建 8 个分级显示级别

Excel 工作表中包含类别汇总和区域汇总的多级嵌套行分组

创建多级行分组的步骤

为了让多级结构更清晰,可以先从最小的子分组开始,再将这些分组包含到更大的父级范围中。

  1. 创建最内层分组:

    • 只选择最小类别对应的明细行,不要包含该类别的小计行。
    • 进入 数据 > 分级显示 > 组合(Windows 可按 Alt + Shift + 向右键,Mac 可按 Command + Shift + K)。
  2. 创建外层父级分组:

    • 确保内层子分组处于完全展开状态,然后选择包含这些子分组的更大范围。不要将更高一级的合计行包含在所选区域中。
    • 再次点击 组合,或使用相应快捷键。
  3. 继续创建更高层级:

    • 按照从较小类别到较大父级类别的顺序重复上述操作。Excel 会自动在工作表左侧显示 1、2、3... 等分级编号,最多支持 8 个嵌套层级。

如何展开或折叠 Excel 中的分组行

创建分组后,可以通过工作表左侧的分级显示控件决定当前显示多少明细内容。

  • 展开或折叠单个分组: 点击减号(-)隐藏明细行,点击加号(+)重新显示明细行。
  • 折叠所有明细: 点击分级显示上方的 1,只显示最外层的汇总信息。
  • 展开所有明细: 点击最高编号的分级显示按钮。对于嵌套分组,也可以点击中间级别的编号,只显示该层级并隐藏更深层的明细。

⚠️ 注意: 展开或折叠分组只会改变行的显示/隐藏状态,不会删除底层数据或现有公式。

如何在 Excel 数据透视表中进行分组

数据透视表分组与普通工作表中的行分组并不相同。

工作表行分组会直接在原始工作表的行旁添加分级显示控件;数据透视表分组则是在数据透视表内部将字段项组合起来,用于汇总和分析。

数据透视表中常见的分组方式包括:

  • 将日期按月、季度或年份分组
  • 将数值划分为不同区间
  • 将选定的文本项目组合成自定义类别

1. 按月、季度或年份对日期分组

Excel 数据透视表中的日期已按年份和月份分组

在较新的 Excel 版本中,将日期字段添加到数据透视表后,Excel 可能会自动进行日期分组。如果需要自定义或修改分组间隔,可以按照以下步骤操作:

  1. 确保日期字段已经添加到数据透视表的 区域。
  2. 右键点击数据透视表中的任意有效日期。
  3. 选择 组合
  4. 根据需要选择一个或多个时间单位,例如:
    • 季度
  5. 点击 确定

如果需要按分组,请在分组对话框中只选择 ,然后将底部的 天数 设置为 7

2. 将数值分组为不同区间

Excel 数据透视表中的数值已按薪资区间分组

如果需要将单独的数值划分为连续区间,例如 ¥0–¥10,000、¥10,001–¥20,000,可以按照以下步骤操作:

  1. 确保数值字段已经添加到 数据透视表字段 窗格的 区域。
  2. 右键点击其中任意一个数值,然后选择 组合
  3. 在分组对话框中设置:
    • 起始于: 区间的最小值,例如 0。
    • 终止于: 区间的最大值,例如 100,000。
    • 步长: 每个区间的跨度,例如 10,000。
  4. 点击 确定

3. 将文本项目组合成自定义类别

Excel 数据透视表中的城市项目已组合为自定义区域类别

你也可以手动选择多个数据透视表项目,并将它们组合成自定义类别。

  1. 选中需要组合的数据透视表项目。如果是不连续的项目,可在 Windows 中按住 Ctrl,在 Mac 中按住 Command 进行多选。
  2. 右键点击任意一个已选项目。
  3. 选择 组合
  4. (可选)点击生成的分组名称(例如 Group1),然后在顶部编辑栏中输入新的类别名称。

例如,可以将多个产品名称或城市名称组合到一个更大的区域类别中。

故障排除:“不能组合所选内容”

当源字段中存在 Excel 无法正确分组的数据时,可能会出现“不能组合所选内容”错误。常见原因包括:

  • 空白单元格
  • 日期或数值字段中包含文本
  • 错误值(如 #N/A#VALUE! 等)
  • 数据类型不一致

解决方法: 检查源数据字段,修正或删除无效值,然后刷新数据透视表(数据 > 全部刷新),再重新尝试分组。

使用 Python 批量自动处理多个 Excel 文件中的行分组

当需要处理数十甚至数百个结构相同的 Excel 工作簿(例如月度财务模型或区域销售报表)时,逐个文件手动创建分组既耗时,也容易遗漏。使用 Python 可以将相同的行分组规则自动应用到多个 Excel 文件。

下面的示例使用 Spire.XLS for Python 演示如何以编程方式创建 Excel 行分组,并设置分级显示相关选项。

第 1 步:安装所需库

运行代码前,先通过 pip 安装所需程序包:

1
pip install Spire.XLS

第 2 步:使用 Python 批量处理文件夹中的 Excel 文件

下面的脚本会遍历指定目录中的 .xlsx 文件,打开每个工作簿,应用嵌套行分组,然后将处理后的文件保存到输出目录:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import os
from spire.xls import *
from spire.xls.common import *

# 定义输入和输出目录
input_folder = "./excel_files/"
output_folder = "./grouped_files/"

# 如果输出目录不存在,则创建该目录
if not os.path.exists(output_folder):
os.makedirs(output_folder)

# 遍历输入目录中的所有 .xlsx 文件
for file_name in os.listdir(input_folder):
if file_name.endswith(".xlsx"):
file_path = os.path.join(input_folder, file_name)

# 加载工作簿
workbook = Workbook()
workbook.LoadFromFile(file_path)

# 获取第一个工作表
sheet = workbook.Worksheets[0]

# 对第 3 到第 6 行建立内层分组
sheet.GroupByRows(3, 6, False)

# 对第 2 到第 10 行建立父级分组
sheet.GroupByRows(2, 10, False)

# 将处理后的工作簿保存到输出目录
save_path = os.path.join(output_folder, file_name)
workbook.SaveToFile(save_path, FileFormat.Version2016)

# 释放资源
workbook.Dispose()

print("Excel 行批量分组完成!")

Python 中的可选高级分组设置

还可以根据实际需要,以编程方式调整汇总行位置或分组的折叠状态。

1. 调整展开/折叠按钮的方向

如果汇总行位于明细数据上方,可以通过以下设置调整汇总方向:

1
sheet.PageSetup.IsSummaryRowBelow = False

2. 默认折叠分组

如果希望用户打开工作簿时分组默认处于折叠状态,可以将 GroupByRows() 的第三个参数设置为 True

1
sheet.GroupByRows(2, 10, True)

3. 折叠已有分组

如果需要折叠已经存在的行分组,可以使用区域级别的折叠方法:

1
sheet.Range["A2:A10"].CollapseGroup(GroupByType.ByRows)

总结

在 Excel 中对行进行分组,可以让包含大量明细数据的工作表更易于阅读和浏览。

可以根据实际需求选择不同的方法:

  • 使用 组合 手动整理指定行范围
  • 使用 分类汇总 按类别生成汇总和分级显示
  • 使用 数据透视表 对数据进行分析和分组
  • 使用 Python 自动化 批量处理重复任务

具体选择哪种方法,取决于你需要的是数据整理、汇总计算、分析还是自动化处理。理解这些方法之间的区别后,就可以更灵活地管理不同规模的 Excel 报表和数据集。

常见问题解答

Q1:可以自动对具有相同值的行进行分组吗?

A1:可以。先按目标值对数据进行排序,如果还需要生成汇总行,可以使用 分类汇总自动建立分级显示依赖已有的汇总结构,并不会仅根据相同的文本标签自动识别分组。本文中的 Python 示例使用的是预先指定的行范围,而不是根据单元格值自动判断分组。

Q2:不添加分类汇总,也可以对行进行分组吗?

A2:可以。直接选择需要分组的行,然后使用 数据 > 分级显示 > 组合 即可。手动分组并不要求存在汇总公式。

Q3:Excel 网页版可以对行进行分组吗?

A3:可以。Excel 网页版支持行分组、嵌套分组以及展开和折叠明细。不过,一些桌面版 Excel 提供的分级显示设置(例如汇总行位置)在网页版中可能不可用。