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

tbo*_*one 4 excel worksheet-function

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

     Jan-00   Feb-00   Mar-00
Joe
Bill
Steve
Run Code Online (Sandbox Code Playgroud)

所以,我想在"Mar-00"中查找"Joe"的值.

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

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

index(data1,match("Mar-00",getrow(mydata,1)),match("Joe",getcolumn(mydata,1)))
Run Code Online (Sandbox Code Playgroud)

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

jto*_*lle 11

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

=VLOOKUP("Joe", mydata, 4, FALSE)
Run Code Online (Sandbox Code Playgroud)

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

=VLOOKUP("Joe", mydata, MATCH("Mar-00", INDEX(mydata, 1, 0), 0), FALSE)
Run Code Online (Sandbox Code Playgroud)

这假设你的"mydata"是整个表,包括行和列标题.

(当然你也可以做你上面所做的,替换getrowgetcolumn调用INDEX.)


小智 5

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

offset(myrange,0,0,1)
Run Code Online (Sandbox Code Playgroud)

同样,第一列是:

offset(myrange,0,0,,1)
Run Code Online (Sandbox Code Playgroud)