在一列中搜索所有匹配值,如果相邻列包含" X"返回" Y"

时间:2016-11-15 21:28:48

标签: excel excel-formula

我有一个大型数据集,其中包含一个带有ID的列,然后是子ID,然后是子ID的状态。仅供参考;子ID可以有两种状态。我想要一个公式来查看A列并查找所有匹配的值,如果其中的状态等于" x"然后返回一个定义的值。

示例:

A        B      C
1-001   0550    UD
1-001   0550    DV
1-001   0003    UD
1-001   0001    UD
1-001   1   
1-003   0550    UD
1-003   0003    UD
1-003   0001    UD
1-003   1   
1-005   0550    UD
1-005   0550    DV
1-005   0027    UD
1-005   0026    UD
1-005   0024    UD
1-005   0023    UD
1-005   0017    UD
1-005   0014    UD
1-005   0012    UD
1-005   0011    UD
1-005   0003    UD
1-005   0001    UD
1-005   1   

我已经尝试了

=IFERROR(INDEX($A$2:$A$7390, SMALL(IF(ISNUMBER(SEARCH(A9,$A$2:$A$7697)),MATCH(ROW($A$2:$A$7697),ROW($A$2:$A$7697))),ROW(A8))),"")

但那不是我真正需要的......

2 个答案:

答案 0 :(得分:1)

Simple Countifs可以解决这个问题。在单元格D1中使用此公式并复制:

=IF(COUNTIFS(A:A,A1,C:C,"DV")>0,"HBP","")

答案 1 :(得分:0)

您可以使用数组公式和简单的条件实现此目的。假设ID列在A列,B列中的状态并专门针对" 1-005":

,公式将如下所示
=OR(IF(A:A="1-005",C:C,"")="DV")

这是按CTRL + SHIFT + ENTER的数组公式输入的。 if将每个单元格与搜索项进行比较,并在列C中输出其对应的状态或以数组的形式输出空字符串。然后将该数组与Defined Value进行比较将输出一个布尔数组,我们将其连接到OR中,如果至少有一个状态等于define值,则为TRUE。希望这是有道理的。欢呼声。