VLOOKUP函数是Excel中最常用的函数之一,用来查找满足条件的数据。Match是另一个查找函数,它的工作方式与VLOOKUP在很大程度上是类似的,但是又有自己的特色。在很多场景中,MATCH函数提供了更多的灵活性。 01 MATCH的语法和基本例子 大部分同学都熟悉VLOOKUP的语法,我们就将MATCH函数的语法与VLOOKUP函数做个对比: 通过对比,可以看出以下几点:
如果仔细分析会发现尽管MATCH和VLOOKUP函数的最后一个参数都是查找方式,它们也有不小的区别。 VLOOKUP函数的最后一个参数是这样的: 这里最后一个参数只能取值TRUE(或1)和FALSE(或0),并且第二个参数table-array首列必须升序排序。 而MATCH的最后一个参数是这样的: 最后一个参数可以去1,0,-1,其中0跟VLOOKUP中的0或FALSE是一样的,代表精确匹配。而1是跟VLOOKUP中的1或TRUE一样的,是近似匹配,此时,第二个参数lookup_array必须以降序排序。 如果最后一个参数取值-1,仍然是近似匹配,但是第二个参数lookup_array必须以升序排序。 下面是一些使用MATCH函数的常规例子。 假设数据如下: 公式: =MATCH("b-2",B3:B7,0) 返回4,这是名称“b-2”在B3:B7中的行序号(第4行) 而公式: =MATCH(13,C3:C7,1) 返回值是2。这是因为在升序的近似匹配中,需要找到所有比13小的数字中最大的那个数字,就是12,它在第2行。 而公式: =MATCH(13,C3:C7,-1) 返回错误值#N/A。这是因为这个公式要求C列降序排序,但是当前数字是升序排序。 02 MATCH函数的几个固定用法 下面介绍MATCH函数的几个固定用法: 01 查找第一个非空单元格 使用公式: =MATCH("*",B:B,0) 02 查找最后一个非空单元格 使用公式: =MATCH("*",B:B,-1) 01 升序排序中得到最后一次出现的行号 使用公式: =MATCH("b",B2:B18,1) 04 定位某一个条件所在的连续区域 如果我们希望得到某一个数值出现的连续区域: 比如,在上图中,我们希望得到"b"所在的单元格区域。可以利用前面的两个用法。(数据必须排序,这样所有的“b”才能连续排在一起。) 首先,得到首次出现“b”的行号: =MATCH("b",B2:B18,0) 然后用下面的公式可以得到首次出现“b”的单元格: =INDEX(B2:B18,MATCH("b",B2:B18,0)) 然后得到最后一次出现“b”的行号: =MATCH("b",B2:B18,1) 使用下面的公式得到最后一次出现“b”的单元格: =INDEX(B2:B18,MATCH("b",B2:B18,1)) 于是,下面的公式就可以返回“b”所在的连续区域: =INDEX(B2:B18,MATCH("b",B2:B18,0)):INDEX(B2:B18,MATCH("b",B2:B18,1)) 可以在公式中使用这个公式,比如: =COUNTA(INDEX(B2:B18,MATCH("b",B2:B18,0)):INDEX(B2:B18,MATCH("b",B2:B18,1))) 返回值是6
|
|