Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 在另一个表中查找值,返回行索引_Excel_Excel Formula - Fatal编程技术网

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

Excel 在另一个表中查找值,返回行索引,excel,excel-formula,Excel,Excel Formula,我对Excel函数缺乏经验,需要以下场景的帮助: 表一有两列: X Y 3.2 result 4.7 result 1.2 result 表二列有: 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]

我对Excel函数缺乏经验,需要以下场景的帮助:

表一有两列:

X      Y 
3.2   result
4.7   result
1.2   result
表二列有:

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(第1列,IFERROR(匹配)(第2列,第2列,第0列),IFERROR(匹配)(第2列,第3列,第0列),IFERROR(匹配)(第2列,第5列,第0列),IFERROR(匹配)(第2列,第6列,第0列),IFERROR(匹配)(第2列,第7列,第0列),IFERROR(匹配(第8列,第8列,第0列),第9列,第9列)

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

我认为Excel2007和2010不再有嵌套限制了。它给出了什么

(对于任何刚刚阅读本文的Excel新手,“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))
          )
我已经接受了Chris的回答,因为他做了大部分工作,但我仍然想知道我的工作环境是否良好,是否有一种更短/更好的方法来完成这项工作


谢谢。

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

注意IsError函数是在Ecel 2007中引入的

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

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

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

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

注意IsError函数是在Ecel 2007中引入的

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

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

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

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


=索引(第1列,SUMPRODUCT((表2=G24)*行(表2))

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


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

如果你可以在表2中添加一列,那很容易。你可以吗?我想我可以,然后我可以隐藏它。但是为什么呢?在这种情况下答案更简单(我回答如下)我删除了我的答案,因为这是错误的(我误解了这个问题)如果你可以在表2中添加一列,这很容易。可以吗?我想我可以,然后我可以隐藏它。但是为什么?答案更简单。在这种情况下(我在下面回答)我删除了我的答案,因为这是错误的(我误解了这个问题)。你的解决方案是有效的。但是我没有提到我在表2中实际上有9列。所以我得到了一个错误(嵌套级别太多)当我尝试使用8个IFERROR时。有没有办法?是否可以将Column2 | | | Column3 | | |····················································(嵌套层次太多)当我尝试使用8个IFERROR时。有没有办法?是否可以将Column2 | | | Column3 | | | | | | | Column9关联到一个数组中并将匹配应用到该数组?*连接。我已经用目前为止所做的更新了我的问题。