如何查找子ID?基于编码、ID、父ID列表的子ID计算需求
如何计算层级列表的子ID
问题背景
现有包含编码、ID、父ID的层级列表,需要计算对应的子ID,目前已掌握父ID的计算方法,但不清楚子ID的实现逻辑。
数据示例
| 编码 | ID | 父ID | 子ID |
|---|---|---|---|
| A01 | 1 | 2 | |
| A0101 | 2 | 1 | 3 |
| A010101 | 3 | 2 |
已有的父ID计算公式
=LET(x;A2:A251;y;SEQUENCE(ROWS(x));HSTACK(y;XLOOKUP(LEFT(x;LEN(x)-2);x;y;"")))
子ID计算方案
基于编码的层级规则(子编码比父编码多两位),可以用反向匹配的公式实现:
=LET(x;A2:A251;y;SEQUENCE(ROWS(x));HSTACK(y;XLOOKUP(x&"??";x;y;"")))
公式说明
x&"??":为当前编码拼接两位通配符,匹配所有以当前编码为前缀的子编码XLOOKUP会定位到符合匹配规则的子编码对应的ID,即为当前行的子ID;若当前编码无下属子项,返回空值,与示例结果一致
若编码的层级长度不是固定两位,只需调整通配符??的数量即可适配。
内容的提问来源于stack exchange,提问作者Frederico Eglesias
相关产品推荐
相关产品推荐

