复杂的提取问题,大神写出三种解法,看看哪一个还未掌握!

文摘   教育   2024-11-13 20:02   上海  




欢迎转发和点一下“看”,文末留言互动!

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





小伙伴们好,今天要和大家分享一道关于数据拆分的题目。这种类型的题目是我们在日常工作中经常遇到的问题之一,数量掌握方法将非常有助于提高工作中的效率。

 

好了,一起来看看题目把。





观察一下题目,没有特别明显的分段特征。公司名称都以“司、行、部”结尾,姓名没有特征,部门都是三个字段,工资是唯一的单字节数据。

 

我们该如何处理呢?思考十秒钟……

 

01

SUBSTITUTE函数法





在单元格C2中输入下列公式,三键回车并向右向下拖曳即可。

=TRIM(MID(SUBSTITUTE(REPLACE(REPLACE(REPLACE($A2,MIN(IFERROR(FIND({"司","行","部"},$A2),99))+1,,"*"),MATCH(,MID($A2,ROW($1:$99),1)*0,)+1,,"*"),MATCH(,MID($A2,ROW($1:$99),1)*0)+3,,"*"),"*",REPT(" ",99)),COLUMN(A1)*99-98,99))

 

一句话解释:

 

利用REPLACE函数在公司名、姓名、工资和部门间插入“*”作为SUBSTITUTE函数分段提取的分割点;同时又利用了FIND函数和MATCH函数来分别定位公司名、姓名、工资和部门间的分割点。这里有一个亮点,即利用MATCH函数的第三个参数的不同来分别定位到工资最左侧和最右侧的数字的位置。


02

仍是SUBSTITUTE函数法,分割、定位方法不同





单元格C2中输入下列公式,三键回车并向下拖曳即可。

=TRIM(MID(REPLACEB(REPLACEB(REPLACEB($A2,SEARCHB("?",$A2)+(2*LEN($A2)-LENB($A2)),,REPT(" ",99)),MAX(IFERROR(FINDB({"司","行","部"},LEFT($A2,LEN($A2)-1))+2,)),,REPT(" ",99)),SEARCHB("?",$A2)-1+100,,REPT(" ",99)),COLUMN(A1)*99-98,99))

 

 一句话解释:

 

和上面的思路形同,同样是定位分割点,只不过这次使用的是REPLACEB函数配合FIND函数、SEARCHB函数来定位分割的。

 

03

海鲜大法






一句话解释:

 

总体上讲也是相同的思路,定位分割点。本例中在定位姓名、工资和部门的分割点时采用了一个比较特别的方法,MIN(FIND(ROW($1:$10)-1,$A2&1/17))+1和LEN($A2),使的公式的长度大大降低,增加个可读性。

 


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


-END-


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

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

我就知道你“在看”


推荐阅读

Excel应用之家
介绍、交流EXCEL各项功能在工作中的实际应用; 为你答疑解惑;分享各类图表、表格和模板;提供有偿代工服务。
 最新文章