在Excel函数中有这样一对“良配”,帮助我们返回相应条件所对应的值,这对函数就是MATCH和INDEX。
MATCH函数帮助我们在给定 特定值 特定顺序的情况,返回符合条件项所在单元格范围或数组的相对位置。根据MATCH函数的这一功能定义,我们可以推断一下它所需要的参数,必须要有一个给定的值,一个给定的范围,以及按照怎样的顺序进行定位,从而可以得出该函数的公式:
=MATCH(lookup_value,lookup_array,[match_type])
需要匹配的对象;
该对象所在的区域;
匹配的方式。
例如,我们获取下图的成绩表中“B3”这个学生在其所在的数据列(或单元格范围E2:E17)是第几个,便可以通过公式“=MATCH("B3",E2:E17,0)”得到。

特别需要注意的是MATCH函数的范围(lookup_array)必须是单行或单列,这样才能正确返回结果。匹配的方式一般都会用到精确匹配,会用到近似匹配的情况比如成绩的区间。

我们通过MATCH函数找到了某个数据的位置,再来看看这个位置又可以怎样帮助我们找到某个范围中的值?
简单来说,INDEX函数可以返回在指定的数据区域或表格的值,同样我们可以去推断它所需的参数,必需的数据范围,在这个范围中的特定位置,从而得出INDEX函数的公式:
=INDEX(array, row_num,[column_num])
array可以是单行,单列或者多行多列的单元格区域;
row_num是对应在数据范围的哪一列;
column_num是对应在数据范围的哪一行。
在成绩表中,我们要获取学号为“202005”的学生的英语成绩,如下图所示,通过公式“=INDEX(F2:F17,5)”便可以得到了。这里是只用到了公式中的两个参数的一种情况,因为数据范围是单列。

如果数据范围多行多列,则公式中的的三个元素都会用到,=INDEX(D2:I17,5,3)

在以上案例中,INDEX函数的后两个参数,我们使用的都是可知的“位置”,肉眼是可以很快知晓的,那如果数据量非常之大,又该如何准确知道学号为“202005”的这位学生在第几行,“英语”成绩在第几列呢?
小伙伴们看到这儿可以自己尝试写一下公式,使用以上两个函数INDEX和MATCH。
不知道你们所写的是不是这样的:=INDEX(D1:I17,MATCH(D6,D1:D17,0),MATCH(F1,D1:I1,0))

MATCH和INDEX函数相结合后,就不再有硬编码(hard-coded)的数据引用了,只需要数据所在的单元格和数据范围即可。
千金可求,良配难寻,如果你还不知道Excel中这一对函数的相配,快来试试吧!