我对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”等是通过选择列,右键单击选择和“定义名称”来制作的。)
所以我通过将公式分成两部分来解决我的嵌套问题,使用+
,ifs返回0,以防任何一方都没有匹配。这样您就可以使用something + 0
或0 + 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))
)
我已经接受了克里斯的回答,因为他完成了大部分工作,但我仍然想知道我的解决方法是否是良好的做法,以及是否有更短/更好的方法来做到这一点。
谢谢。
答案 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)))