Excel函数返回范围的第一行或第一列? (用于数据表中更好的2路查找)

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

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

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

这种types的查找通常使用INDEX和MATCH函数的组合来完成。 这种方法的缺点是MATCH只能在1维的范围内工作,所以在一个有大量表格的大型电子表格中,最后你不得不为每个表格定义3个范围(一个是数据,一个是标题行,一个用于左栏)。

我想能够做到这样的事情:

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

在excel中是否有这样的东西(或者,完全不同的方法,也许是excel中的一些新特性)?

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

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

您也可以使用INDEX通过将零作为参数之一来获取整个行或列从一个范围(或二维数组)中取出:

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

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

(当然,你也可以只做上面所做的,用INDEX的调用replacegetrowgetcolumn 。)

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

 offset(myrange,0,0,1) 

同样的第一列是:

 offset(myrange,0,0,,1) 

虽然它可能不是最有效的方法,但您可以使用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是包含所需标题的列(在本例中是date)
  • 'RawData'!$ C $ 1:$ C $ 4是包含所需值的列