分享

这题看起来虽简单但却很绕脑,据说只有不到3%的人可以做出来!

 EXCEL应用之家 2023-01-03 发布于上海


送人玫瑰,手有余香,请将文章分享给更多朋友

动手操作是熟练掌握EXCEL的最快捷途径!

【置顶公众号】或者【设为星标】及时接收更新不迷路



小伙伴们好,今天要和大家分享一道数据提取的问题。之所以要分享这道题目,还是要和大家再次强调规范数据录入的重要性。

来一起看看原题吧。



要求使用公式将名字后面的房号提取出来。除了使用CTRL+E外,公式书写还是有点小麻烦的。


01

CTRL+E

在单元格B2中输入希望提取的字符串后,同时按下CTRL+E键。




02

观察一下这道题目的源数据。名字在中间,两侧分别是日期和房号。要想提取到房号,就要首先定位到最后一个汉字。



在单元格B2中输入公式“=MIDB(MID(A2,MATCH(2,LENB(MID(A2,ROW($1:$20),1)),),100),SEARCHB("?",MID(A2,MATCH(2,LENB(MID(A2,ROW($1:$20),1)),),100)),100)”,三键回车并向下拖曳即可。

思路:

  • MID(A2,ROW($1:$20),1)部分,由于汉字是双字节,其它的数字和符号都是单字节,因此我们第一步先把源数据中每一个字符都提取出来

  • LENB(MID(A2,ROW($1:$20),1))部分,返回每个字符的字节数。这里使用的是LENB函数,非常简单,它返回字符的字节数,请注意它和LEN函数的异同点

  • MATCH(2,LENB(MID(A2,ROW($1:$20),1)),)部分,由MATCH函数来查找第一个双字节(即汉字)的位置

  • MID(A2,MATCH(2,LENB(MID(A2,ROW($1:$20),1)),),100)部分,从第一个汉字开始,提取后面所有的字符串。这样做的目的是,提取后剩余的字符串中左侧部分是汉字部分,右侧部分是数字部分

  • 接下来,在新的字符串中查找第一个数字的位置。SEARCHB("?",MID(A2,MATCH(2,LENB(MID(A2,ROW($1:$20),1)),),100))部分就是这个目的。同时SEARCHB函数的这个用法也是一个常用的技巧

  • 找到第一个数字后,在新的字符串中提取第一个数字以后所有的字符串,就是我们想要的答案。

从这个题目中我们可以看出,这个公式书写还是有些复杂的。但如果在数据录入的时候就能做到分列录入,就不会有后面这些麻烦了。


03

上面的公式还是有些复杂了。还有更简洁的答案吗?答案是肯定的!



在单元格B2中输入公式“=TRIM(VLOOKUP(" *",RIGHTB(A2,ROW($1:$50)),1,))”,三键回车并向下拖曳即可。

一句话解释:

这个公式最核心的部分就是利用RIGHTB函数从右向左依次提取字符。由于RIGHTB函数是提取字节数的,而汉字是两个字节,当遇到第一个汉字时它提取第一个字节是提取不出来的,所以返回一个空格。因此在RIGHTB所提取的字符串中有且一定有一个是“空格+数字部分”的,正好可以利用VLOOKUP函数抓取。


04

下面这个函数也非常有新意。



单元格B2中输入公式“=RIGHT(A2,MATCH(1=1,LEFT(RIGHT(A2,ROW($1:$99)),1)>="吖",0)-1)”,三键回车并向下拖曳即可。

一句话解释:

"吖"这个汉字在EXCEL中是非常小的一个汉字。利用LEFT/RIGHT函数的组合将字符串中的每一个字符都提取出来和"吖"比较,再用MATCH函数来定位最后一个汉字的位置。接下来就可以提取希望的字符串了。

本期内容练习文件提取方式:

链接:https://pan.baidu.com/s/1kHrX6cxStRyekuF3PEmNSw

提取码:cjjj


好了朋友们,今天和大家分享的内容就是这些了!喜欢我的文章请分享、转发、点赞和收藏吧!如有任何问题可以随时私信我哦!

-END-

长按下方二维码关注EXCEL应用之家

面对EXCEL操作问题时不再迷茫无助

我就知道你“在看”

推荐阅读

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多