熟悉excel的朋友们应听说过index match函数的组合查询,这个查询可以不像vlookup那样要求查询值在被查询区域的第一列,甚至不要求结果值同被查询值在同一行,这个是不是非常厉害。
一、概念
index函数返回表或区域中的值或值得引用,语法为:INDEX(array, row_num, [column_num])。什么意思呢?简单说就是给你一个已知区域,然后返回这个区域中行几列几的结果。如图:index(B2:E5,3,4)所要表达的就是,我需要B2:E5区域行3列4的值,所以返回的就是“l”了。如果一致区域是都在一行或都在一列,那么后面就只需要一个参数了,相当如告诉系统我要本行列几的值,或者本列行几的值。
match函数返回指定数值在指定数组区域中的位置,语法为:MATCH(lookup_value, lookup_array, [match_type])。就是说我要查一个已知值,在某个区域内的位置,他会以数值的形式表达。如图:MATCH(B8,E1:E5,0)所表达的就是l在E1:E5区域的行数,返回值为4。若改为E2:E5区域,那么所在行数就变成了3,若区域改为A4:E4,返回的就是在这个区域中的列数。语法中最后一个0表示精确查找,1表示查找小于或等于lookup_value的最大值,-1表示查找大于或等于lookup_value的最小值。如果选择1那么要求查找区域里的数按照升序排列,-1就要按降序排列。0就没有限制了。
二、综合应用
我们知道了单个函数的应用,那么组合函数其实也就是单个函数的扩充,是为了解决单个函数中某个未知的或者变动的需求。如上图所示,已知值“l”,并且我知道这个值会出现在E列中,我想要知道这个值所在行对应C列的值是什么?那么我们可以使用index函数。第一个选择区域,我们可以使用C:C区域(因为我们知道结果在C列中,或者说我们需要对应C列中的结果),l会出现在这个区域的第几行呢?这个我们不知道,所以要引用一个函数来求他,这样match函数就自然出来了,match函数的语法中第一个字段为查找值(已知值)“l”所在位置,第二个字段查找区域“E1:E5”,第三个字段为查找参数“0”精确查找,我们可以看到返回了同l同在一行的C列的值j。
总结一下:index(结果所在的列,match(已知值,查找已知值的区域,0))
是不是很简单,而且你在无形中弄出了一个组合函数。如果在match函数后面加或减一个数表示什么意思呢?他又会返回什么值呢?请各位朋友们思考思考吧。
,