查看原文
其他

比VLOOKUP好用10倍!这是我见过最强的关键词查找函数!

小花 秋叶Excel
2024-09-16
 
本文作者:小花
本文编辑:竺兰


文末有配套练习文件,记得领取哦~

前几日,一位职场 Exceller 提出了一个很接地气的实战问题:


老师,下面这个表,能否不通过辅助列,直接设置公式按门店名称关键字,查询对应销售额?



F2 单元格公式:

=LOOKUP(1,0/(MID(E2,FIND("/",E2)+1,LEN(E2)-FIND("/",E2))=$C$2:$C$6),$B$2:$B$6)


C2 单元格辅助公式

=MID(A2,FIND("(",A2)+1,FIND(")",A2)-FIND("(",A2)-1)


不得不说,这位小伙伴在 Excel 公式使用方面还是很有料的,通过辅助列来简化公式,观察规律并使用正确的函数。


有丰富的函数基础知识储备,还会使用 LOOKUP 两分法,相信这位小伙伴已是妥妥的职场 Excel 达人了。



但当前公式仍有优化空间。比如,F2 单元格公式从 E2 单元格提取店名时,使用 LEN(E2)-FIND("/",E2)来获取店名长度是没有必要的。


因为 E2 文本中,店名后并无其他内容,只需使用一个较大的数作为 MID 的第三个参数,比如数字 10,就能够完整提取店名。


F2 单元格公式-简单优化:

=LOOKUP(1,0/(MID(E2,FIND("/",E2)+1,10)=$C$2:$C$6),$B$2:$B$6)



言归正传。不通过辅助列解决这一关键字查询问题,方法有很多。接下来,小花就分享其中的四个不同公式。


还是遵循提问者的思路,从 E 列中提取关键字——店名,然后使用 LOOKUP 的两分法来查询目标值。只是,我们不仅需要使用 FIND 函数来提取店名,更需要用它完成模糊匹配


想学习更多 Excel 高效小技巧,提高工作效率早下班?
快来秋叶 Excel 3 天集训营,在这里我们会手把手教你,如何系统学习 Excel,少走弯路不踩坑!
现在扫描下方二维码,添加班主任微信,即可免费加入,还送《100 套实用表格模板》《35 个常用函数说明》
秋叶 Excel 3 天集训营专为职场人量身打造掌握 Excel 技巧,提升办公效率
赶紧扫码加班主任微信报名吧↓↓↓

正向查询




=LOOKUP(1,0/FIND(MID(E2,FIND("/",E2)+1,10),$A$2:$A$6),$B$2:$B$6)


公式说明:


① MID(E2,FIND("/",E2)+1,10)

显然,门店简称中,"/"后即为店名。使用 FIND 查找出"/"在 E2 文本中的位置,+1 即为店名文本首个字符的位置,再使用 MID 函数提取店名即可。


② 0/FIND(①,$A$2:$A$6)

再次使用 FIND 函数,分别在 A2:A6 单元格查找店名文本出现的位置。如果单元格文本存在该店名文本,则返回代表初始位置的数值,否则返回错误值#VALUE!,即得到数组{11;#VALUE!;#VALUE!;#VALUE!;#VALUE!}。


0 除以该数组,得到{0;#VALUE!;#VALUE!;#VALUE!;#VALUE!}。


特别需要强调的是,LOOKUP 的两分法在构建第二个参数时,所有非零的数都表示满足查询条件,所有的零值和错误值都表示不满足条件,并不要求除数总是一组逻辑值或 0/1 的组合。


③ LOOKUP(1,②,$B$2:$B$6)

经典的 LOOKUP 两分法,忽略错误值,查询小于且最接近于目标值 1 的最后一个有效值,从结果区域返回其相应位置的值。

此处除②中 FIND 函数返回有效数值的位置外,其余均为错误,因此,A2:A6 中包含目标店名的单元格 A2 在 B2:B6 的对应位置 B2 的值 46,即为返回值。


当然了,如果目标店名很容易提取,使用 VLOOKUP 和通配符来解决问题也是非常方便的。

模糊查询




=VLOOKUP("*"&MID(E2,FIND("/",E2)+1,10)&"*",$A$2:$B$6,2,0)


同时,由于查询结果为数值且唯一,使用 SUMIF 进行条件求和也有异曲同工之妙。

求和查询




=SUMIF(A:A,"*"&MID(E2,FIND("/",E2)+1,10)&"*",B:B)


但有些时候,从 E 列单元格提取目标店名并不容易。比如下图,E 列并不存在明显店名标识特征,不方便提取店名,而在 A 列提取店名显然更容易。



此时,我们需要在优化公式 1 的基础上稍加变通,从 A 列提取店名,对 E 列进行反向查询。

反向查询




=LOOKUP(1,0/FIND(MID($A$2:$A$6,FIND("(",$A$2:$A$6)+1,10),E2&")"),$B$2:$B$6)


公式说明:


① MID($A$2:$A$6,FIND("(",$A$2:$A$6)+1,10)将 A2:A6 单元格中的店名都提取出来。


FIND(①,E2&")")查找这些店名是否存在于 E2 单元格中,由于片段①提取的店名时没有去除最后的右括号")",于是需使用 E2&")"作为匹配文本,这点需格外留意。


最后,LOOKUP 两分法照方抓药,解决问题。


以上,就是小花分享的关键字查询实战案例,解决方法包含如下几种:


❶ 使用 FIND 在多个单元格中匹配目标文本的 LOOKUP 正向查询公式;


❷ VLOOKUP 与通配符组成的模糊查询公式;


❸ SUMIF 求和实现对唯一数值的查询作用;


❹ 使用 FIND 将多个文本匹配目标单元格的 LOOKUP 反向查询公式。


上述公式你学会了吗?如果你也在实际工作中遇到难以解决的公式问题,欢迎留言与我们探讨!


当然了,要轻松解决这样的难题,还得更系统地掌握 Excel 知识,如果你想学,那我强烈推荐你加入秋叶 Excel 3 天集训营
在这里,不仅有知名讲师手把手教你,还有贴心助教在群里 1 对 1 为你答疑,不怕遇到问题没人解答!
秋叶 Excel 3 天集训营原价 99 今天只需 0 元
还等什么赶紧扫码加班主任微信免费学习吧!↓↓↓↑↑↑现在报名还100 套实用 Excel 模板35 个常用函数说明手册

💬



点击下方公众号卡片发送【关键】免费领配套练习文件!👇👇👇以上内容包含广告
继续滑动看下一个
秋叶Excel
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存