查询函数一直是Excel中常被用到的一种函数,本篇来介绍一下index与match在实际工作中的应用实例。

先看一下这个Excel工作簿。要求:将“用户分析”工作表中机房名称列中输入函数,向下拖动使其自动选择对应“号段检索”工作表中备注的机房名称。

1

2

其中故障号码为“号段检索”表中起始、结束号段中的码号。因此这里需要利用index与match函数来完成检索号段归属机房查询工作。

想到了index与match函数了吧,可以先回顾一下。

------------------------------------------------------------------------------------------

------------------------------------------INDEX----------------------------------------

index函数的意义:返回指定行列交叉处引用的单元格。                                                                   

公式:=index(reference,row_num,column_num,area_num)
reference指的是要检索的范围;
row_num指的是指定返回的行序号,如超出指定检索范围,返回错误值#REF!;
column_num指的是指定返回的列序号,如超出指定检索范围,返回错误值#REF!;
area_num指的是返回该区域中行和列的交叉域。可省略,默认1。如小于1时返回错误值#VALUE!

------------------------------------------------------------------------------------------

------------------------------------------MATCH--------------------------------------

match函数的意义:返回指定方式下查找指定查找值(可以是数字、文本或逻辑值)在查找范围1行或1列的位置。

公式:=match(lookup_value,lookup_array,match_type)
lookup_value指指定查找值;
lookup_array指的是1行或1列的被查找连续单元格区域。
match_type指的是查找方式,1或省略指查找小于或等于lookup_value的最大值,lookup_array必须为升序排列,否则无法得到正确结果。
0指查找等于lookup_value的第一个数值,如果不是第一个数值则返回#N/A
-1指查找大于或等于lookup_value的最小值,lookup_array必须为降序,否则无法得到正确结果。

------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------

那么在这里是用match函数来定位“用户分析”表中故障号码在“号段检索”起始号段结束号段的所在行序号。

如下图:=MATCH(用户分析!K2,号段检索!B:B,1)。但是为什么检索出来的行号会是错误值呢?

3

别忘了,match_type为-1时,lookup_array必须为升序排列,也就是“号段检索”表中起始号段应按升序排序。

4

OK,这次查询正确,也可以抽一个验证一下无误即可。

5

最后index函数利用match定位的行序号,来引用“号段检索”表中该行序号所在备注的机房名称。

输入公式如下:INDEX(号段检索!A:G,MATCH(用户分析!K2,号段检索!B:B,1),6)。

6

最后向下拖动公式,完成机房名称检索。

在实际应用中可能常用的是精确查找,但是如果match函数需要应用-1和1时,特别要注意lookup_array的排序问题。