如何高效展平账户层级结构,让子节点父节点显示在相邻列?
Excel层级节点按层级拆分至对应列的公式方案
需求概述
表格结构:
- A列:层级节点名称(包含多个顶层父节点,子节点可嵌套至不同深度)
- B列:节点对应的缩进级别(根节点为Level 1,下一级为Level 2,以此类推)
需实现:
- C列:显示当前节点的根节点(Level 1父节点)
- D列:显示当前节点的Level 2父节点
- E列:显示当前节点的Level 3父节点
- ...以此类推至J列
分列公式
以下公式均从第2行开始输入(假设表头在第1行),输入后直接下拉填充即可:
C列(Level 1 根节点)
=IF(B2=1,A2,INDEX(C$1:C1,MAX(ROW($1:1)*(B$1:B1=1))))
D列(Level 2 父节点)
=IF(B2=1,"",IF(B2=2,A2,INDEX(D$1:D1,MAX(ROW($1:1)*(B$1:B1=2)))))
E列(Level 3 父节点)
=IF(B2<=2,"",IF(B2=3,A2,INDEX(E$1:E1,MAX(ROW($1:1)*(B$1:B1=3)))))
后续列(Level 4至Level 9,对应F至J列)
复制E列公式,将其中的数字2和3替换为目标层级的前一个层级和目标层级即可。比如F列(Level 4)的公式:
=IF(B2<=3,"",IF(B2=4,A2,INDEX(F$1:F1,MAX(ROW($1:1)*(B$1:B1=4)))))
公式逻辑说明
- 层级匹配判断:如果当前节点缩进级别等于目标列对应层级,直接显示自身名称
- 低层级处理:如果当前节点缩进级别小于目标层级,显示空值
- 高层级回溯:如果当前节点缩进级别大于目标层级,通过
INDEX+MAX+ROW组合,向上查找最近的、缩进级别等于目标层级的节点,提取其在目标列的内容
内容的提问来源于stack exchange,提问作者Matt
相关产品推荐
相关产品推荐

