![在索引匹配中使用命名范围](https://linux22.com/image/1438166/%E5%9C%A8%E7%B4%A2%E5%BC%95%E5%8C%B9%E9%85%8D%E4%B8%AD%E4%BD%BF%E7%94%A8%E5%91%BD%E5%90%8D%E8%8C%83%E5%9B%B4.png)
我有一个命名范围 (DATA_DUMP_GROCERY),我正尝试使用索引匹配从中提取值。这是我的公式:
=INDEX(DATA_DUMP_GROCERY,MATCH(Confectionery!$B$15,DATA_DUMP_GROCERY,0),4)
如您所见,我试图用数字指定要使用哪一列,就像我通常一起使用 Index 和 Match 时所做的那样。然而,这不起作用,我得到了 #N/A 错误。
我怎样才能提取数组中特定行的值?
答案1
INDEX/MATCH
完全能够使用作为数据表的命名范围。如果在使用它的地方可以接受 2-D(表格)数据。
但是,您在两个不同的地方使用它,因此需要两件不同的东西。
INDEX()
在公式的实际部分,您首先需要为其提供一个范围,以便将所有内容作为基础。您需要做DATA_DUMP_GROCERY
的就是该范围。完全没问题。DATA_DUMP_GROCERY
大概是一个二维数据表,因此这正是最常见的用途,INDEX()
并且该函数很满意。
但是,您随后给出了相同的命名范围,MATCH()
但它只需要检查一列。(实际上,有办法可以将其设置为多列,但不像您那样。)由于您为其提供了一个包含多列的数据表,因此它失败了。该失败导致整个过程失败。
您可以使用INDEX()
内部MATCH()
从命名范围中提取单个列并将其呈现给MATCH()
,或者您可以简单地键入单列地址引用,甚至可以创建另一个包含该地址的命名范围。
我的偏好非常简单:第一个想法,使用INDEX()
inside MATCH()
:
=INDEX(DATA_DUMP_GROCERY,MATCH(Confectionery!$B$15,
INDEX( DATA_DUMP_GROCERY,,1 , 0),4)
很简单,因为相关参数INDEX()
可能简单明了,对吧?ROW 不需要任何内容,因为您需要所有行,以及查找数据所在的列号(上述公式中的第 1 列)。
那么一切都会顺利进行。