在另一个表中查找值,返回行索引

时间:2011-07-24 18:05:56

标签: excel excel-formula

我对Excel功能缺乏经验,需要以下方案提供帮助:

表I有两列:

X      Y 
3.2   result
4.7   result
1.2   result

表II包含以下列:

A    B    C    D
1   1.2  0.0  2.3
2   4.1  3.2  0.0
3   0.0  4.7  0.0

我将尝试用C ++ / C#/ Java编程语法来说明我想要做的事情:

在Y [1]中我想存储:

foreach (int value in TableII)   //look for X[1] in Table 2
   if( value == X[1] ){          //when you find it, 
      return A[value.rowNumber]; //return the corresponding value from A
      //break;
   }

换句话说,我想在表II中找到X [1](它将始终存在,并且总是只有一次),并从与匹配相同索引的列A返回相应的值。 / p>

我已经看过了HLOOKUP,但只有一个命令还有更多内容。请帮忙。


[编辑]

我试过这个=INDEX(Column1,IFERROR(MATCH(I2,Column2,0),IFERROR(MATCH(I2,Column3,0),IFERROR(MATCH(I2,Column4,0),IFERROR(MATCH(I2,Column5,0),IFERROR(MATCH(I2,Column6,0),IFERROR(MATCH(I2,Column7,0),IFERROR(MATCH(I2,Column8,0),MATCH(I2,Column9,0)))))))))

但是我得到了“比当前文件格式允许的更多嵌套级别”错误。如果我只删除一个IFERROR(MATCH(I2,Column8,0),那么它就可以了。但我需要第2列到第9列,其中Column1保存索引。

我认为Excel 2007和2010不再具有嵌套限制。是什么给了什么?

(对于读取此内容的新手,“Column1”等是通过选择列,右键单击选择和“定义名称”来制作的。)


[EDIT2]

所以我通过将公式分成两部分来解决我的嵌套问题,使用+,ifs返回0,以防任何一方都没有匹配。这样您就可以使用something + 00 + something,这样就可以了。

这是我现在使用的公式:

    =INDEX(Column1, IFERROR(MATCH(I3,Column2,0),IFERROR(MATCH(I3,Column3,0),IFERROR(MATCH(I3,Column4,0),IFERROR(MATCH(I3,Column5,0),IFERROR(MATCH(I3,Column6,0),IFERROR(MATCH(I3,Column7,0),0))))))    
                    +     
                    IFERROR(MATCH(I3,Column8,0),IFERROR(MATCH(I3,Column9,0),0))
          )

我已经接受了克里斯的回答,因为他完成了大部分工作,但我仍然想知道我的解决方法是否是良好的做法,以及是否有更短/更好的方法来做到这一点。

谢谢。

2 个答案:

答案 0 :(得分:1)

这是Y的可能公式(假设表I位于G:H列中)

=INDEX($A:$A,IFERROR(MATCH(G2,$B:$B,0),IFERROR(MATCH(G2,$C:$C,0),MATCH(G2,$D:$D,0))))

请注意,在Ecel 2007中引入了IsError函数

如果您的表实际定义为excel表,则可以使用

=INDEX(Table2[Column1],IFERROR(MATCH([@X],Table2[Column2],0),IFERROR(MATCH([@X],Table2[Column3],0),MATCH([@X],Table2[Column4],0))))

(替换您自己的表名和列名)

答案 1 :(得分:0)

如果您的值是唯一的,则可以使用以下公式而无需进行任何嵌套:

=INDEX(column1,SUMPRODUCT((Table2=G24)*ROW(Table2)))