【发布时间】:2012-10-31 01:16:56
【问题描述】:
我对 Excel 函数缺乏经验,在以下情况下需要一些帮助:
表 I 有 2 列:
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 列中返回相应的值[与匹配项具有相同的索引]。
我已经查看了 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 不再有嵌套限制。什么给了?
(对于阅读此内容的 Excel 新手,“Column1”等是通过选择列、右键单击选择并“定义名称”来完成的。)
[编辑2]
所以我通过将公式分成两部分来“解决”我的嵌套问题,使用+,如果两边都不匹配,则 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))
)
我接受了 Chris 的回答,因为他完成了大部分工作,但我仍然想知道我的解决方法是否是好的做法,以及是否没有更短/更好的方法来做到这一点。
谢谢。
【问题讨论】:
-
如果您可以在表 II 中添加一列,这很容易。可以吗?
-
我想我可以,然后我可以隐藏它。但为什么呢?
-
在这种情况下答案更简单(我在下面回答)
-
我删除了我的答案,bcs 是错误的(我误解了问题)
标签: excel excel-formula