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
的调用replacegetrow
和getcolumn
。)
使用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是包含所需值的列