2011-08-05 12 views
4

所以我试图从数据表,即做经典的2路查找:Excel函数返回范围的第一行或第一列? (在数据表中的更好的2路查找)

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

所以,我想看看在价值对于“Mar”,“Joe”。

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

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

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

有没有这样的事情在Excel(或者,这样的一个完全不同的方式,也许在Excel中一些新的功能)?

回答

11

这是经典使用列(或相关HLOOKUP):

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

还可以使用INDEX得到一个整行或列出的范围内的(或2- d阵列)通过使零作为参数之一:

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

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

(当然你也还可以只是做你在上面做了什么,与调用INDEX更换getrowgetcolumn。)

+0

我意识到这是正确的,但我并不知道,我去之后第四列。并且使用INDEX需要我重新声明一个范围,我正在寻找索引的范围,因为它只能作用于一维范围。 – tbone

+0

这就是我的第二个例子 - 显示你如何使用INDEX从一个范围或数组中获取整行(列)。这不是你的问题吗? – jtolle

+0

对不起,你是对的,我只是没有仔细阅读。非常好,谢谢!不要以为我曾经遇到过这种语法,或者我曾经错过了它。 – tbone

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是含有所需值
5

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

offset(myrange,0,0,1) 

同样,第一列是:

offset(myrange,0,0,,1) 
+0

@NickFreeman:恢复了OP的代码片段,由您的修改决定。 –

+0

@HermanSchoenfeld谢谢 –

相关问题