在索引匹配中使用命名范围

在索引匹配中使用命名范围

我有一个命名范围 (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 列)。

那么一切都会顺利进行。

相关内容