Excel中最常用的一个功能就是lookup函数了,他是一个查找函数,分为纵向查找函数Vlookup和横向查找函数Hlookup,可以实现快速查找数据。

Vlookup函数

vlookup函数的功能是按列查找,最终返回的是与查找信息位于同一行的相关信息。如下图所示,vlookup可以查询第一列中销售部门员工的姓名、性别、基本工资、提成和总薪资。

vlookup很好用也很常用,但是其也有几个局限性:只能查找第一列中的内容;且只能正向查找,只能通过第一列查找第二、三等列的内容,不同通过第二列反向查找第一列的内容。


java indexOf 反向查找 index match函数反向查找_快速查找


Index+Match的组合

index和match作为一对完美的组合搭配,很好的解决了vlookup以上的局限性,可以反向且可多条件查找。

如下图中,要查找Jack所在的部门、性别、基本工资、提成和总薪资,就可以使用Index+Match组合函数。


java indexOf 反向查找 index match函数反向查找_快速查找


match函数用于返回要查找信息所在的行或列,比如要查找Jack的部门,match可以返回"Jack"所在的行(第3行),也可以返回“部门”所在的列(第1列)。

index用于返回指定位置对应的信息或值,比如match函数返回了Jack部门在第1列第3行,那么index返回的就是第1列第3行的值"产品"部门。

Match函数

match函数的表达形式是 :match ( 要查询的值,要查询的区域,查找类型),意为要查询的值在查询区域的什么位置。

查找类型分为-1,0,1

1,表示match函数会查找小于或等于“要查询值”的最大值;
0,表示match函数会查找等于“要查询值”的第一个值;
-1,表示match函数会查找大于或等于“要查询值”的最小值。

例如,查询Jack所在的行,表达式就是:MATCH($K$16,$D$2:$D$11,0),或MATCH(“Jack”, $D$2:$D$11,0),返回值3。

又例如,查询部门所在的列,表达式就是MATCH($I18,$C$2:$H$2,0),MATCH(“部门”,$C$2:$H$2,0),返回值1。


java indexOf 反向查找 index match函数反向查找_函数返回_03


Index函数

index函数的表达形式是:index ( 信息所在的区间,查询信息所处的行,查询信息所处的列) ,意为从查询区间里内返回指定行和列的值。

比如返回Jack的部门,则表达式为 INDEX ($C$2 : $H$11, 3, 1)

其中第3行第1列又可用match函数表达,则为

INDEX($C$2 : $H$11, MATCH($K$16,$D$2:$D$11,0), MATCH($I18,$C$2:$H$2,0)) 。

同理,Jack 对应的性别、基本工资、提成和总薪资的查询与部门的查询一致,公式见下表红色字体。


java indexOf 反向查找 index match函数反向查找_函数返回_03