按关键字查找,在工作中是很常见的诉求,随着 365 函数的出现,公式越来越简化。但是要说到查找届能集大成者,这个函数不得不提。
案例:根据下图 1 中 E 列的姓名,从左侧的数据表中查找出对应的部门,效果如下图 2 所示。
解决方案:
1. 在 F2 单元格中输入以下公式 --> 下拉复制公式:
=LOOKUP("々",INDIRECT("a$1:A"&MATCH(E2,$B$1:$B$14,0)))
* 公式中的“々”也可以换成“座”,通常用来表示编码最大的汉字。
为了更好地让大家理解公式,我会从内到外一边解析一边演示结果给大家看。
公式释义:
MATCH(E2,$B$1:$B$14,0):在区域 $B$1:$B$14 中精确查找 E2 单元格的值,返回查找结果在整个序列中的排序序号;
INDIRECT("a$1:A"&...):
将 "a$1:A" 与上述匹配结果用 & 符号连接起来,结果为 A$1:A8;
用 indirect 函数提取出区域中的值;
LOOKUP("々",...):
在上述结果中从后向前查找“々”;
lookup 的作用是从单行或单列或数组中查找符合条件的值,如果找不到需要查询的值,就返回比查询值小的最接近的一个;
由于 lookup 要求第二个参数按升序排序,所以不管排没排,它都认为已经排好了,因此默认最后一个是最大值;
在区域中查找“々”,如果找不到,且最后一个字符的字符集编码小于“々”,LOOKUP 函数就默认将最后一个字符当成区域中所有字符中最大的一个,并且返回该字符。
解析完毕后,再来个彩蛋。
利用 lookup 的这个查找特性,就可以连续填充合并单元格的值。
2. 在 D2 单元格中输入以下公式 --> 下拉复制公式:
=LOOKUP("々",$A$2:A2) 或
=LOOKUP("座",$A$2:A2)
公式释义:
在区域 $A$2:A2 中自下往上查找“々”或“座”,如果找不到则返回比它小的最大值,即区域内最后一个单元格的值;
参数中的区域需要第一个单元格绝对引用,而第二个单元格相对引用