确定excel行的父级

确定excel行的父级,excel,vba,excel-2007,Excel,Vba,Excel 2007,我有一张excel表格,格式如下 Name | Data | Level | parent | ------------|-------|--------| AAA | XXX | 1 | root(?)| BBB | YYY | 2 | AAA(?) | CCC | ZZZ | 3 | BBB(?) | DDD | XYZ | 4 | CCC(?) | EEE | YZX | 3 | BBB(?) | FFF | ZXY | 4

我有一张excel表格,格式如下

Name | Data | Level | parent |
------------|-------|--------|
AAA  | XXX  | 1     | root(?)| 
BBB  | YYY  | 2     | AAA(?) |
CCC  | ZZZ  | 3     | BBB(?) |
DDD  | XYZ  | 4     | CCC(?) |
EEE  | YZX  | 3     | BBB(?) |
FFF  | ZXY  | 4     | EEE(?) |
GGG  | ZXR  | 4     | EEE(?) |

我要做的是为每一行获取父对象的名称。例如,CCC i的i应该能够用BBB填充其父列。有什么办法可以做到这一点吗

D2
输入

=IF(C2=1,"Root",LOOKUP(2,1/($C$2:$C2=C2-1),$A$2:$A2))
然后根据需要向下拖动?这至少适用于您的样品

解释如下:

测试如果列级别中此行的值=1,则返回“Root”

测试列级别中此行的值是否为1,如果不是,则执行以下操作:

从当前行level中获取级别为1的所有行的数组。($C$2:$C2=C2-1)

将该数组划分为1,以获取每个位置上的错误,该位置不高于一级

在错误数组中查找2和1。(返回最底部的1(最后一行高一级))

在该位置的
Name
列中返回值

结果如下:


数据中是否实际存在
(?)
?因此,数据中有两个级别4行,还有两个级别3行:是什么决定了哪个L3是任何给定L4的父级?这仅仅是工作表上的顺序吗?@Brad(?)意味着它应该被计算。@TimWilliams给定L4行的父级是它之前的最新L3。在尝试公式并拖动它之后,我得到的是到处都是“根”。你知道为什么吗?你穿上了吗?在我的答案中添加了一张带有我自己结果的图片。