2.1.3 MATCH函数的使用方法和应用

2.1.2节介绍了如何利用OFFSET函数引用数据,但是因为需要数偏移多少行或者多少列,如果在数据量大的时候,就太麻烦了,那么有没有一个函数可以直接告诉我们应该偏移多少行或者多少列呢?这样就可以节省数行和列的时间了。

答案是肯定的,MATCH函数就可以实现。

MATCH 函数是在指定区域范围中搜索指定的项,然后返回该项在此区域中的相对位置。例如,如图2-9所示,如果想要知道PC端访客数在第一行的什么位置应该怎么做呢?

图2-9

在实现这个过程的时候,先学习和了解MATCH函数的语法:

=MATCH(lookup_value, lookup_array, [match_type])

参数说明:

(1)lookup_value:要查找的值。例如,图2-9中,如果想要在第一行查找PC端的访客数,那么PC端访客数就是lookup_value。

注意:lookup_value可以为值(数字、文本或逻辑值)或对数字、文本或逻辑值的单元格引用。

(2)lookup_array :要搜索的单元格区域。例如,如果想要图2-9中第一行查找PC端访客数的位置,那么第一行就是lookup_array,但是区域必须是某一行或某一列,如果是一个多行多列的区域是没办法查找的。

(3)match_type:表示查询的指定方式。用数字-1、0或者1表示,match_type省略相当于match_type为1的情况。

① 为1或者省略时,MATCH函数查找小于或等于lookup_value的最大值。lookup_array参数中的值必须以升序排序。

② 为0时,MATCH函数查找完全等于lookup_value的第一个值。lookup_array 参数中的值可按任意顺序排列。

③ 为-1时,MATCH函数查找大于或等于lookup_value 的最小值。lookup_array 参数中的值必须按降序排列。

例如,在2.1.2节中如果想要通过函数找到PC端访客数所在的位置,那么可以利用MATCH函数。

如图2-10所示,在任意一个单元格中输入“=MATCH("PC端访客数",1:1,0)”,也可以输入“=MATCH(F13,1:1,0)”,因为这里F13单元格的内容就是PC端访客数,1:1代表的是第一行这个范围,但是如果写文字“PC端访客数”就需要输入英文状态下的""。然后,按Enter键,就会返回位置的数据。

图2-10

这里返回的值是10,即PC端访客数在第一行的第十个位置,第J列正好就是第十列。很显然,返回的是正确的,因此以后碰到这种需要找位置的情况可以利用MATCH函数。

接下来,再介绍嵌套函数。嵌套函数是指在某些情况下,需要将某函数作为另一函数的参数使用。例如,OFFSET函数有一个参数是偏移多少列,因为MATCH可以找到偏移多少列的值,也就是说,可以利用MATCH函数代替OFFSET函数中的参数cols。

在利用OFFSET函数引用PC端访客数的时候公式为“=OFFSET(A1,1,9)”,而公式“=MATCH("PC端访客数",1:1,0)”等于10,即“OFFSET(A1,1,9)”中“9”可以用“=MATCH("PC端访客数",1:1,0)-1”代替,因为“MATCH("PC端访客数",1:1,0)-1”也正好等于9。

所以,可以把“OFFSET(A1,1,9)”写成“OFFSET(A1,1, MATCH("PC端访客数",1:1,0)-1)”,如图2-11所示,结果相同。

图2-11

先点击F14单元格,把光标放在单元格的右下角,等光标变成黑色十字的时候双击鼠标左键,可以把下面的单元格也自动快速填充公式,计算出结果。

但是如果要使用双击快速填充公式还需要利用绝对引用,否则,会出现如图2-12所示的错误。

图2-12

在没用绝对引用的时候,会发现后面单元格里的公式MATCH函数的查找范围发生了变化, F15单元格的成了第二行(2:2), F16单元格的成了第三行(3:3),以此类推。很显然,需要的都是在第一行查找,即需要的是MATCH函数中的查找区域都是第一行(1:1)。

这个时候需要学习一个新的知识点,绝对引用“$”。

在数据分析的实际应用过程中,函数往往并非只是针对某一个单元格,它可能是针对一行或者一列,甚至一个区域。因此,在这个过程中往往都会涉及快速填充或者复制公式,而要在复制或者快速填充的过程中保证公式的正确,就必须掌握绝对引用。

相对引用和绝对引用是Excel中非常重要的基础概念。相对引用即它是相对的关系,如图2-13所示,在E7单元格中输入“=A1”,然后按Enter键之后点击E7单元格,把光标放在E7单元格的右下角,等光标变成黑色十字的时候按住鼠标左键往下拖,E8单元格就变成了引用A2的内容,而不再是引用A1的内容,这就是相对引用。

图2-13

但是,如图2-13所示,如果在E7单元中输入“=$A$1”,即在行和列前面分别加上一个“$”。这个时候如果按照上面的方法拖到E8单元格,会发现E8单元的内容还是引用A1,而不是引用A2,这就是绝对引用,不管怎么拖动,它都不会发生变化。

绝对引用就相当于锁定一样,不管怎么拖动,它都不会动,还有一种混合引用的方法,如“A$1”,在列前面没有加“$”,只在行的前面加上“$”,即只锁定行,而不锁定列,也就是说,当拖动的时候,行是不能变的,但是列是可以变动的,这就是混合引用。

在MATCH("PC端访客数",1:1,0)函数中,“PC端访客数”这几个字只能在第一行,即不管怎么拖动都必须保持在第一行中查找,这个时候就需要利用绝对引用,MATCH("PC端访客数", $1:$1,0),需要在“1”前面都加上“$”。

可以试一下,如果公式是“=MATCH(F13,1:1,0)”,那么当使用快速填充公式的时候,单单锁定查找范围还不行,还需要锁定查找的值,即F13。完整公式应该是“=MATCH($F$13, $1:$1,0)”。