分享

每日Excel分享(函数)| 这样的字符提取能用函数解决吗?观察规律很重要

 江上向东数峰青 2018-01-11

2017再见,2018我来了!我的Excel继续与您每天不见不散!


村长1月3日跟大家分享了一篇关于如何从字符串中提取字符的文章,讲的内容都比较简单,有兴趣的朋友可以看本文后面的推荐文章链接。今天村长继续跟大家分享一个比较复杂的字符串提取,数据如下图:

为什么说这个字符提取比较复杂呢?我们观察B列的款号我们发现款号都是由字母和数字组成的,然而商品名称除了款号组成的字母和数字之外,还有其他的字母和数字,严重干扰了我们对字符的定位和提取,那么我们要怎么办呢?


首先我们观察发现每一个商品名称的款号后面都有一个空格,所以我们可以把款号后面的内容都去掉,如下图:



函数公式:

=LEFT(A2,FIND(' ',A2)-1)


PS:FIND(' ',A2)定位第1个空格的位置从而确定左边截取多少个字符


然后我们继续观察前面提取字符后得到的内容,每一个商品的款号前面都是一个中文的汉字(2字节),而我们前面也说了款号是有字母和数字组成的,而字母和数字都是只有1个字节,所以我们只要找到最后一个2字节的字符位置就能找到最后一个中文汉字的位置



函数公式:

=LOOKUP(1,0/(LENB(MID(B2,ROW($1:$99),1))=2),ROW($1:$99))


PS:利用LOOKUP二分法查找最后一个满足条件的结果的原理找到最后一个汉字的位置。


最后根据最后一个汉字的位置+1就得到了我们要提取款号的第一个字符的位置



函数公式:

=MID(B2,C2+1,99)


前面就是我们字符中提取款号的思路,根据规律来查找定位要提取的字符的第1个位置,当然前面只是我们因为讲解需要将公式拆分了所以需要用到多个辅助列,我们可以不用辅助列直接将公式写出来,如下图:



函数公式:

=MID(LEFT(A2,FIND(' ',A2)-1),LOOKUP(1,0/(LENB(MID(LEFT(A2,FIND(' ',A2)-1),ROW($1:$99),1))=2),ROW($1:$99))+1,99)

公式下拉即可


我们再来看一下下面的截图

为什么款号有两个单元格是空白的截取不到内容呢?原因就在于商品名称中款号前面也存在有空格,而我们前面的公式并没有考虑到这一点,所以出现了问题,那么我们要怎么做呢?大家可以思考一下,欢迎给出更有的处理公式。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多