送人玫瑰,手有余香,请将文章分享给更多朋友
动手操作是熟练掌握EXCEL的最快捷途径!
【置顶公众号】或者【设为星标】及时接收更新不迷路
小伙伴们好,文本处理始终是我们日常工作中的主要内容之一。熟练掌握一些基本的文本处理函数及技巧,有助于我们大大提高工作效率。今天就来和大家分享这样一道题目。
我们需要把A列中的字符串分解成如C列到F列一样。
观察一下这组源数据。它是由数字和文本构成的,而且并没有特别明显的排列规律。字符串以城市名称开头,后接“分行、总部、公司”等字符,除此以外,没有特别明显的规律。
老虎吃天,该如何下口呢?
上面提到了,唯一可以利用的有规律的信息就是“分行、总部、公司”等字符。这是我们可以考虑使用FIND函数来进行查找,就可以确定城市名称的具体位置了。
首先选中单元格区域C1:C4,然后在编辑栏中输入公式“=LEFT($A$1:$A$4,FIND({"分行";"公司";"总部";"公司"},A1:A4)+1)”,三键回车即可。
思路:
FIND({"分行";"公司";"总部";"公司"},A1:A4)部分,我们分别查找{"分行";"公司";"总部";"公司"}在对应字符串中的位置。注意,由于源数据是列方向排列的,因此{"分行";"公司";"总部";"公司"}中也要对应使用分号“;”,表示也是列方向内存数组
查找到后,仍需要+1,才能完整地提取到公司到公司名称。因为我们是2个字符一起查找的
最后利用LEFT函数提取即可
接下来我们提取人名信息。我们知道可以利用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提取人名
提取到人名后我们继续来提取数字。数字提取的方法很简单,还是利用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提取数字
最后我们来提取部门。最开始是我写了一个很长的公式“=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函数提取部门即可。
-END-
长按下方二维码关注EXCEL应用之家
面对EXCEL操作问题时不再迷茫无助
我就知道你“在看”
联系客服