使用条件逻辑Excel查找包含'X'的最后一行

时间:2014-06-27 18:40:44

标签: excel excel-vba excel-formula vba

我甚至不知道这是否可以在Excel中使用。我需要一种方法来将后续行与前一行(子节点连接到父节点)链接起来。

例如,第2行包含父信息,表示为' M'在E栏中。

如果父母有3个孩子,第3,4,5行,他们将会包含一个' S'或者' D'在E栏中。

如果有' S'或者' D'我需要在最后一行中搜索有一个' M'然后从该行中的B列中获取值(这是父级的唯一ID)并将其插入到行3,4和1中的列中。 5创建3个孩子和父母一方之间的关系。有些情况下,任何数量的孩子都没有孩子,到目前为止,我们已经确信下一行" up"将始终是后续子行的父级。

Sample Data

所以在上面,因为E3和E4是第2行的D(子),我需要取B2(UID)并把它放在F3和F4中。由于下一行是M(父),因此F5是空白的。第6行是第5行的子项,因此获取B5并将其复制到F6。

B列是名字的前3个字母和dob的公式,格式为YYYYMMDD,并且对于子行不是必需的(但将被存储)。希望澄清!

4 个答案:

答案 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)

以下是我的观点:

enter image description here

答案 1 :(得分:0)

可能有一种更简单的方法,但...... =IF(F12="",IF(E13<>"M",B12,""),IF(E13="M","",F12)) 看起来工作。

enter image description here

答案 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))