Excel层级数据中获取父UUID的公式需求(反向递归查找)
Excel 层级数据自动获取父UUID的公式方案
针对你提供的层级结构数据(子项始终位于父项下方,层级ID无需严格递减),以下是两种适配不同Excel版本的公式方案,解决VLOOKUP仅返回第一个匹配项的问题:
一、适用于Excel 365/2021(支持动态数组)
在D2单元格输入以下公式,会自动填充所有行的ParentId:
=BYROW(B2:B18,LAMBDA(level,IF(level=1,"",XLOOKUP(TRUE,B$1:INDEX(B:B,ROW(level)-1)=level-1,A$1:INDEX(A:A,ROW(level)-1),"",0,-1))))
公式说明:
BYROW遍历每一行的层级ID- 层级为1时直接返回空(无父项)
XLOOKUP的-1参数指定从后往前查找,定位当前行之前最后一个层级ID等于当前层级-1的UUID,这就是当前项的父ID
二、适用于Excel 2019及更早版本(无动态数组支持)
在D2单元格输入以下公式,下拉填充至所有行:
=IF(B2=1,"",LOOKUP(2,1/(B$1:B1=B2-1),A$1:A1))
公式说明:
1/(B$1:B1=B2-1)生成数组,匹配父层级的位置返回1,不匹配返回错误值LOOKUP(2,...)会忽略错误值,直接定位最后一个匹配的位置,返回对应UUID
验证示例
以你提供的数据为例:
- 第8行(Child Sarah,层级3):公式会找到之前最后一个层级2的UUID(974),正确返回父ID
- 第9行(Mother Moira,层级2):找到之前最后一个层级1的UUID(961),正确返回父ID
- 第13行(Grandpa Joe,层级1):直接返回空,符合根节点无父项的规则
内容的提问来源于stack exchange,提问作者A...
相关产品推荐
相关产品推荐

