兰色看到一个同学提问:把括号 () 内含有 * 号的内容提取出来。
肯定有不少人说:这还不容易,用
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集 。( 绿卡会员 有效期内 免费 )详情点击下方链接