分享

文本处理问题,只要你找到源数据的规律,那剩下的事情就简单多了!

 恶猪王520 2022-05-23 发布于新疆


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

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

领取红包封面
微信红包封面

图片


小伙伴们好,文本处理始终是我们日常工作中的主要内容之一。熟练掌握一些基本的文本处理函数及技巧,有助于我们大大提高工作效率。今天就来和大家分享这样一道题目。


图片

我们需要把A列中的字符串分解成如C列到F列一样。

观察一下这组源数据。它是由数字和文本构成的,而且并没有特别明显的排列规律。字符串以城市名称开头,后接“分行、总部、公司”等字符,除此以外,没有特别明显的规律。

老虎吃天,该如何下口呢?


01

上面提到了,唯一可以利用的有规律的信息就是“分行、总部、公司”等字符。这是我们可以考虑使用FIND函数来进行查找,就可以确定城市名称的具体位置了。


图片

首先选中单元格区域C1:C4,然后在编辑栏中输入公式“=LEFT($A$1:$A$4,FIND({'分行';'公司';'总部';'公司'},A1:A4)+1)”,三键回车即可。

思路:

  • FIND({'分行';'公司';'总部';'公司'},A1:A4)部分,我们分别查找{'分行';'公司';'总部';'公司'}在对应字符串中的位置。注意,由于源数据是列方向排列的,因此{'分行';'公司';'总部';'公司'}中也要对应使用分号“;”,表示也是列方向内存数组

  • 查找到后,仍需要+1,才能完整地提取到公司到公司名称。因为我们是2个字符一起查找的

  • 最后利用LEFT函数提取即可


02

接下来我们提取人名信息。我们知道可以利用SERACHB函数来查找到第一个单字符字节的位置,方法就是查询一个问号“?”就可以了。这样,人名起止字符的位置信息就知道了,接下来再利用MIDB函数提取人名信息。


图片

同样,首先选中单元格区域D1:D4,再输入公式“=MIDB($A$1:$A$4,LENB($C$1:$C$4)+1,SEARCHB('?',$A$1:$A$4)-LENB($C$1:$C$4)-1)”,三键回车。

思路:

  • SEARCHB('?',$A$1:$A$4)部分确定第一个数字字符的位置

  • LENB($C$1:$C$4)+1部分确定人名第一个字符出现的位置

  • SEARCHB('?',$A$1:$A$4)-LENB($C$1:$C$4)-1部分确定人名的长度

  • 最后用MIDB提取人名


03

提取到人名后我们继续来提取数字。数字提取的方法很简单,还是利用SEARCHB函数。


图片

选中单元格区域E1:E4,输入公式“=MIDB($A$1:$A$4,SEARCHB('?',$A$1:$A$4),2*LEN($A$1:$A$4)-LENB($A$1:$A$4))”,三键回车。

思路:

  • SEARCHB('?',$A$1:$A$4)部分确定数字的开始位置

  • 2*LEN($A$1:$A$4)-LENB($A$1:$A$4)确定数字的长度

  • MIDB提取数字


04

最后我们来提取部门。最开始时我写了一个很长的公式“=RIGHT(MIDB($A$1:$A$4,SEARCHB('?',$A$1:$A$4),100),LENB(MIDB($A$1:$A$4,SEARCHB('?',$A$1:$A$4),100))-LEN(MIDB($A$1:$A$4,SEARCHB('?',$A$1:$A$4),100)))”,但其实并不复杂。还是利用了MIDB、LEN、LENB和RIGHT函数来完成的,思路和上面的一样。

但是后来考虑到可读性,我还是修改如下。


图片

选择单元格区域F1:F4后输入公式“=RIGHT($A$1:$A$4,LEN($A$1:$A$4)-LEN($C$1:$C$4&$D$1:$D$4&$E$1:$E$4))”,三键回车。

思路非常简单,用字符串的总长度减去前面已经提取到的字符串的长度,再用RIGHT函数提取部门即可。

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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多