Excel函数从一个范围返回第一行或第一列? (在数据表中进行更好的双向查找)

时间:2011-08-05 23:27:22

标签: excel worksheet-function

所以我试图从数据表中进行经典的2路查找,即:

     Jan-00   Feb-00   Mar-00
Joe
Bill
Steve

所以,我想在“Mar-00”中查找“Joe”的值。

这种类型的查找通常使用INDEX和MATCH函数的组合来完成。这种方法的缺点是MATCH只能作用于1维范围,因此在包含大量表格的大型电子表格中,您最终必须为每个表定义3个范围而不是一个(一个用于数据,一个用于标题行,左列一个。)

我希望能够做到这样的事情:

index(data1,match("Mar-00",getrow(mydata,1)),match("Joe",getcolumn(mydata,1)))

excel中有这样的东西吗(或者,这样做的方式完全不同,可能是excel中的一些新功能)?

3 个答案:

答案 0 :(得分:11)

这是VLOOKUP(或相关HLOOKUP)的经典用法:

=VLOOKUP("Joe", mydata, 4, FALSE)

您还可以使用INDEX通过将零作为参数之一传递来获取范围(或2-D数组)中的整行或列:

=VLOOKUP("Joe", mydata, MATCH("Mar-00", INDEX(mydata, 1, 0), 0), FALSE)

这假设您的“mydata”是整个表格,包括行和列标题。

(当然,您也可以执行上述操作,将getrowgetcolumn替换为INDEX

答案 1 :(得分:5)

使用offset公式。对于某些命名范围 myrange ,第一行是:

offset(myrange,0,0,1)

同样,第一栏是:

offset(myrange,0,0,,1)

答案 2 :(得分:0)

虽然它可能不是最有效的方法,但您可以使用SUMPRODUCT来完成此请求。你想要做的是有一个包含值的工作表,然后在你的显示板上引用它们。

=SUMPRODUCT(--('RawData'!$A$1:$A$4="Joe"),--('RawData'!$B$1:$B$4="Mar-00"),'RawData'!$C$1:$C$4)

其中:

  • 'RawData'!$ A $ 1:$ A $ 4是包含名称
  • 的列
  • 'RawData'!$ B $ 1:$ B $ 4是包含所需标题的列(在本例中为日期)
  • 'RawData'!$ C $ 1:$ C $ 4是包含所需值的列