因此,我在 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
如果您的级别数量有限,那么我会执行以下操作。如果您的数据必须刷新,它具有简单的枢轴刷新优势(即您只需设置一次):
创建新列(数字=最大级别)来表示该人员在层级结构中每一级的上司(注意,它假定它按层级字段排序)
D3 中的公式并复制过来并向下复制:
=IF($B3=D$2,$A3,IF($B3<D$2,"",D2))
- 创建一个数据透视表(根据您的喜好,可以是紧凑视图或大纲视图),将每个级别的老板设置为行标签
- 过滤掉每一级的空白关卡 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
真挚地