如何让 Excel 自动将层次结构概括为群组?

如何让 Excel 自动将层次结构概括为群组?

因此,我在 Excel 电子表格中有一堆数据,如下所示:

Level   Hierarchy       Name
0       1               Sam
1       1.1             Bill
2       1.1.1           George
3       1.1.1.1         Fred
4       1.1.1.1.1       Richard
4       1.1.1.1.2       Steve
4       1.1.1.1.3       Max
4       1.1.1.1.4       Sven
3       1.1.1.2         Mike
4       1.1.1.2.1       John
4       1.1.1.2.2       Isaac
4       1.1.1.2.3       Zack
2       1.1.2           James
3       1.1.2.1         Henry
4       1.1.2.1.1       Greg
            .
            .
            .

我希望在工作表中自动创建组,这样 Richard、Steve、Max 和 Sven 就归入 Fred 之下;John、Isaac 和 Zack 归入 Mike 之下;等等……;而他们都归入 Sam 之下。

我尝试使用 Excel自动轮廓功能,但我收到消息“无法创建大纲”。有人能告诉我如何实现此功能或建议另一种方法吗?

数据来自另一个系统,但我可以在将数据导入 Excel 之前对其进行转换——如果这样更容易的话。

答案1

如果您的级别数量有限,那么我会执行以下操作。如果您的数据必须刷新,它具有简单的枢轴刷新优势(即您只需设置一次):

  1. 创建新列(数字=最大级别)来表示该人员在层级结构中每一级的上司(注意,它假定它按层级字段排序) 在此处输入图片描述

  2. D3 中的公式并复制过来并向下复制:=IF($B3=D$2,$A3,IF($B3<D$2,"",D2))

  3. 创建一个数据透视表(根据您的喜好,可以是紧凑视图或大纲视图),将每个级别的老板设置为行标签
  4. 过滤掉每一级的空白关卡 Boss

在此处输入图片描述

答案2

为了使用自动大纲分组功能,您需要使用 Subtotal() 函数(手动)插入汇总行。然后 Excel 会将其识别为分组的断点。有关详细信息,请参阅 Microsoft 文章概述(分组)工作表中的数据

答案3

我会将此表加载到 Power Pivot 中,并使用 DAX 函数(例如 PATHITEM)将层次结构扁平化为级别

http://www.powerpivotblog.nl/powerpivot-denali-parent-child-using-dax/

如果您不能使用 Power Pivot,那么我会让源系统以类似的方式将层次结构扁平化为级别列。

演示将以数据透视表的形式进行,您可以在其中展开节点。这将自动调整新数据的输入,而无需摆弄公式。

最大的警告是你必须固定最大级别数。

答案4

用于按层次结构列中的数字自动对行进行分组的 VBA 代码

For i = 3 To RowLength 
    On Error Resume Next
    levelNo = Len(Cells(i, WBSColNo)) - Len(Replace(Cells(i, WBSColNo), ".", "")) + 1
    Rows(i).OutlineLevel = levelNo  
 Next

真挚地

相关内容