MATCH函数是工作表建模中极为有用、应用非常广泛的函数,MATCH函数的用途是根据指定的匹配方式,返回给定的查询元素在原始数据中的相对位置,该原始数据是一行或一列的数组向量。MATCH函数所查找的是匹配元素的相对位置而非匹配元素本身,例如,MATCH(″b″,{″a″,″b″,″c″},0)返回2,即“b”在数组{″a″,″b″,″c″}中的相应位置。因此,MATCH函数最经常和其他查找和引用函数如INDEX、VLOOKUP、OFFSET等结合使用。MATCH函数的语法形式为:
MATCH(lookup_value,lookup_array,match_type)
其中,Lookup_value为需要在数据表中查找的数值,可以为数值(数字、文本或逻辑值)或对数字、文本或逻辑值的单元格引用。Lookup_array是可能包含待查找数据的连续单元格区域或向量数组。
MATCH_type为匹配方式,用于指导Excel在lookup_array中查找lookup_value的具体模式,取值包括数字-1、0或1(见图4-16),具体含义为:
如match_type为1(TRUE,或缺省值),MATCH查找小于或等于lookup_value的最大数值,同时要求lookup_array必须按升序排列:…、-2、-1、0、1、2…A-Z、FALSE、TRUE。
如match_type为0(FALSE),函数MATCH查找等于lookup_value的第一个数值。Lookup_array可以按任何顺序排列,即执行精确匹配。
如match_type为-1,函数MATCH查找大于或等于lookup_value的最小数值,同时要求lookup_array按降序排列:TRUE、FALSE、Z-A…2、1、0、-1、-2…。
图4-16 MATCH函数的匹配方式
不同匹配模式下,MATCH函数应用效果存在较大差别,以下分别介绍不同的匹配示例。
■ MATCH的精确匹配查询。
继续沿用CPI物价指数时间序列的案例,假设要求获得指定月份和指定指标的物价数据,在已知月份所在行和指标所在列的前提下,很容易可以通过INDEX函数获得数据结果。但多数情况下,行号和列号并非事先可知,例如已知信息是需要查找的某个月份,此时可以通过MATCH函数在原始数据中查找该月份的所在行。
假设需要查找2012年10月份的食品物价指数数据,下例使用MATCH函数将给定的月份和指标名称转换成原始数据表内的相对位置即第几行和第几列。“=MATCH(J7,B7∶B19,0)”在日期所在的B7∶B19区域内查找指定日期的所处位置,返回结果为2,即第2行。“=MATCH(J8,C6∶G6,0)”在指标名称所在的C6∶G6区域内查找“食品”的所处位置,返回结果为3,即第3列。二者都使用了精确匹配模式,第三个参数均为0。
取得行列位置信息后,进一步使用INDEX函数即可返回所需要的数据,公式为:=INDEX(C7∶G19,L7,L8),其中L7和L8分别是使用MATCH函数获得的行和列参数(见图4-17)。(www.xing528.com)
图4-17 MATCH函数的精确匹配查询
■ MATCH的模糊查询。
在参数match_type为1或-1的情况下,MATCH函数可执行模糊查询。沿用之前的利息率案例,假设账户余额为45000元,使用MATCH函数可获得适用利率所在行,公式为:
=MATCH(G17,B18∶B21,1)
其中,G17为待查询的账户余额,B18∶B21为各档利率的账户余额下限,该列数据按升序排列,因此使用匹配参数1即查找小于等于45000的最大值,获得结果为3(G18),表示适用利率位于第3行,在此基础上使用INDEX函数获得利率结果为5%(G19)(见图4-18)。
图4-18 MATCH的模糊查询
MATCH函数的其他注意事项。
■ 如查找不成功,函数MATCH将返回错误值“#N/A”。
■ 如果match_type为0且lookup_value为文本,可以在lookup_value中使用通配符、问号(?)和星号(∗)。问号匹配任意单个字符;星号匹配任意一串字符。如果要查找实际的问号或星号,请在该字符前键入波形符(~)。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。