当前位置: 欣欣网 > 办公

哪位大神发现Vlookup这个逆天新用法,背后这个符号太利害!

2024-05-10办公

兰色看到一个同学提问:把括号 () 内含有 * 号的内容提取出来。

肯定有不少人说:这还不容易,用 Ctrl E 就可以了。那兰色就帮你试一试,结果是错的。

喂!兰色,你跑题了吧,今天的标题主角是 Vlookup ,这个问题和Vlookup有什么关系?难道要用它?这不太可能吧,Vlookup什么时候可以提取字符了?

没错, 兰色试了很多方法,而用Vlookup函数写的公式最简单。

那公式怎么写,兰色快告诉我。先别急,这个需要从最近兰色遇到的另外一个简单例子说起。

【例】如下图所示在右表中设置Vlookup公式,根据E列的内容从左表中查找,明明看上去一样公式也没错误,结果却查找不到。

=VLOOKUP(E2,$B$2:$C$6,2,0)

究其原因,原来是B列的内容后含有换行符。

换行符很多同学不知道怎么给删除掉( 可以用分列 ),那只能在公式中处理。兰色看了有不少同学用 clean trim ,但有时候你的表中可能有这两个函数删除不掉的不可见字符。这时候,本文另一个主角要出场了,它就是标题中我们说的神秘字符 * 星号 )

* 是表示任意多个字符的通配符,Vlookup的第一个参数又支持用通配符查找,所以二者合作,正好可以解决这个问题。

=VLOOKUP(E2&"*",$B$2:$C$6,2,0)

咱们理解了 Vlookup + * 的模糊查找用法后,就可以解决今天遇到的超复杂字符提取问题了。

分析:

1、因为字符串中有多组括号,所以第一步我们需要找到*后的括号位置

=FIND(")",A2, FIND("*",A2) )

公式说明:先查找 * 号的位置( 因find不支持通配符,所以这里只是一个普通符号,并不是通配符 ),然后再用find函数查找 * 后 " ) " 的位置。FIND函数第3个参数为查找开始位置。

2、用left函数把字符截取出来,括号后面多余的部分删除掉。

=LEFT(A2,FIND(")",A2,FIND("*",A2)))

3、从字符串后用right函数分别截取1,2,3,4......15次( 提取次数要大于括号内的字符长度 ),你会发现终有一个是我们要想的结果。

4、问题是怎么把两边有括号的行提取出来?嘿嘿,这时候该Vlookup闪亮登场了,配合*号完美的实现了提取。

=VLOOKUP(" (*) ",RIGHT(LEFT(A2,FIND(")",A2,FIND("*",A2))),ROW(1:15)),1,0)

注: (*) 表示模糊查找两边有括号的。

最终的公式为:

=VLOOKUP("(*)",RIGHT(LEFT(A2,FIND(")",A2,FIND("*",A2))),ROW($1:15)),1,0)

如果以为这只是 vlookup * 偶尔应用,不足以支持「逆天」称号,你可曾记得兰色前段时间分享的另一个示例,也是用了同样的思路,解决了一个超难的字符串提取难题。

兰色说 :通过今天的示例,是不是又刷新了对Vlookup认知。这个你认为已完全掌握的函数,竟然还可以这么用。

兰色根据多年经验,录制了一全套适合新手和初中级阶段用户学习的Excel教程。包括 Excel表格88个函数用法( 即将更新几十个新函数,示例整理中 )、119个使用技巧、透视表从入门到精通50集、图表从入门到精通186集 。( 绿卡会员 有效期内 免费 )详情点击下方链接