【问题标题】:Find value in another table, return row index在另一个表中查找值,返回行索引
【发布时间】: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


【解决方案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))))

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

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

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

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

【讨论】:

  • 您的解决方案有效。但我没有提到我在表 II 中实际上有 9 列。因此,当我尝试使用 8 个 IFERROR 时出现错误(嵌套级别太多)。有什么办法吗?是否可以将 Column2||Column3||...||Column9 连接到单个数组中并将匹配应用于该数组?
  • *连接。我已经用我到目前为止所做的事情更新了我的问题。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2014-12-21
    • 1970-01-01
    • 2018-03-20
    • 1970-01-01
    • 1970-01-01
    • 2021-05-26
    • 1970-01-01
    • 1970-01-01
    • 2017-07-27
    相关资源
    最近更新 更多