我甚至不知道这是否可以在Excel中使用。我需要一种方法来将后续行与前一行(子节点连接到父节点)链接起来。
例如,第2行包含父信息,表示为' M'在E栏中。
如果父母有3个孩子,第3,4,5行,他们将会包含一个' S'或者' D'在E栏中。
如果有' S'或者' D'我需要在最后一行中搜索有一个' M'然后从该行中的B列中获取值(这是父级的唯一ID)并将其插入到行3,4和1中的列中。 5创建3个孩子和父母一方之间的关系。有些情况下,任何数量的孩子都没有孩子,到目前为止,我们已经确信下一行" up"将始终是后续子行的父级。
所以在上面,因为E3和E4是第2行的D(子),我需要取B2(UID)并把它放在F3和F4中。由于下一行是M(父),因此F5是空白的。第6行是第5行的子项,因此获取B5并将其复制到F6。
B列是名字的前3个字母和dob的公式,格式为YYYYMMDD,并且对于子行不是必需的(但将被存储)。希望澄清!
答案 0 :(得分:1)
这是一个似乎有用的解决方案:下面的公式将写在E4
中(作为数组公式输入,即在PC上按ctrl-shift-enter或在Mac上使用cmd-shift-enter),然后根据需要复制下来。它需要在它上面有足够的空间(因为你看起来“在这行之上最多有三个”,这需要是一个有效的行)。
=IF(NOT(E4="M"),INDEX(B$1:B3,MAX((E1:E3="M")*ROW(E1:E3)))," ")
说明:
=IF(NOT(E4="M") - check that this is not a "parent" (i.e. we need to do a lookup)
MAX((E1:E3="M")*ROW(E1:E3))) - see what cell has an M. the (E1:E3) produces 0 or 1
- multiply by the row number and you get an array of 0 or row number
- the MAX of this is the last row number with an M
INDEX(B$1:B3, number) - find the corresponding value in column B
- note the $ sign since the ROW is absolute row
" " - empty space when there IF is false (i.e. this is a parent)
以下是我的观点:
答案 1 :(得分:0)
可能有一种更简单的方法,但......
=IF(F12="",IF(E13<>"M",B12,""),IF(E13="M","",F12))
看起来工作。
答案 2 :(得分:0)
我倾向于使用额外的列来解决这种情况。 B列有您的ID,E列有分类。假设第一列(如果显示无效则可以隐藏)具有最新父级的ID。假设我们从第2行开始(你会在一瞬间看到原因)。如果E2有“M”,那么我们想要ID(B2);如果没有,我们希望传播前一行的值。这是这样做的公式:
=IF(E2="M", B2, I1)
然后在F列中,您的“链接到”列,使用以下公式:
=IF(E2="M", "", I2)
填写,这就是你所需要的一切。
已更新以匹配新发布的图片
答案 3 :(得分:0)
使用您提供的样本数据,在单元格F2中使用此公式并复制:
=IF(E2="M","",LOOKUP(2,1/(E$2:E2="M"),B$2:B2))