根据excel中的2个条件返回多个不同的值

时间:2013-04-15 12:14:52

标签: excel

希望你能提供帮助。我有2张excel表,看起来像这样:

Sheet1:

 ID       trnx       Module
 1        aj08       AA
 2        aj08       AA
 3        aj08       AA
 1        CJ20       ps opex
 1        CJ20       ps capex
 2        cn22       HR

 Sheet 2

 ID       trnx       Module
 1        aj08 
 2        aj08 
 1        ml81
 3        aj08
 2        cn22
 1        cj20
 1        cj20
 3        mm02

使用的公式是

INDEX($G$2:$G$9,SMALL(IF(A2=$F$2:$F$9,ROW($F$2:$F$9)-MIN(ROW($F$2:$F$9))+1,"")&IF(C2=$H$2:$H$9,ROW($H$2:$H$9)-MIN(ROW($H$2:$H$9))+1,""),COUNTIF(A$2:A$2,A2)&COUNTIF(C$2:C$2,C2)))

我需要根据匹配的ID和trnx来填充表2中的“模块”,如果ID匹配但不匹配trnx,那么它必须将模块的单元格设置为“No Match”。

我遇到的问题是表2正在填充错误的数据。例如,表2中第二次出现ID“1”正在拉出模块ps opex。因为表2中的trnx是ml81,所以假设是“不匹配”。

请帮忙!!!在此先感谢:)

1 个答案:

答案 0 :(得分:0)

这不会解决我在评论中提到的您有“重复密钥”的部分,但无论如何都可以帮助您:

由于您的密钥实际上是Idtrnx列的组合,因此我插入了一个连续列(我使用了=CONCATENATE(trnx, "_", id),其中这些名称指的是工作表位置,但您可以就像在另一个方向上容易连接一样,或者使用其他一些分隔符。它只是制作一个单一的键列(我们可以对它进行排序和搜索更容易。)

在表2中,我从其中列出的值形成相同的键列,然后您的模块列变为:

 =IF(ISNA(VLOOKUP(I12,$C$10:$D$15,2,0)), "No Match", VLOOKUP(I12,$C$10:$D$15,2,0))

在该公式中,I12是我们在工作表2中查找的关键单元格,VLOOKUP中的绝对引用是工作表1中的数据表。