当我们用Excel来做文本分析、网络数据爬取,都需要熟练地进行文本处理,本文总结一了一些经典的函数文本处理思路,供有需要的朋友参考。
基本的文本函数
以下这些都是最基本的文本字符处理函数,都是必须要掌握的。=>表示箭头,箭头前是公式,箭头后代表相应的运算结果
LEFT
LEFT("数据化管理",2) => "数据"
RIGHT
RIGHT("数据化管理",2) => "管理"
MID
MID("数据化管理",3,1) => "化"
LEN
LEN("数据化管理") => 5
SEARCH
SEARCH("化","数据化管理") => 3
SUBSTITUTE
SUBSTITUTE("数据化管力","力","理") => "数据化管理"
相信以上的6个函数,大家一个个看的话,肯定都能明白。
Excel公式的精髓,或者说是难点就是在于嵌套,因为嵌套其实就是算法,写算法就要考你的逻辑理解能力了,当然我们借鉴别人的算法也是很常见的,但前提是你必须要理解,不然你也用不好。
以下就是结合具体文本处理场景的一些经典公式(以下将按由易到难的顺序排列,记得看完)
,如果你都能明白了,那就是文本处理高手了!
截断固定长度
① 截断左边1个字符
A1单元格的值是"?数据化管理"
RIGHT(A1,LEN(A1)-1) => "数据化管理"
② 截断右边1个字符
A1单元格的值是"数据化管理?"
LEFT(A1,LEN(A1)-1) => "数据化管理"
基于分隔符提取
A1单元格的值是"数据化-管理"
① 提取分隔符之前
LEFT(A1,SEARCH("-",A1)-LEN("-")) => "数据化"
② 提前分隔符之后
RIGHT(A1,LEN(A1)-SEARCH("-",A1)) => "管理"
A1单元格的值是"数据-化-管理"
③ 提取分隔符之间
MID(A1,SEARCH("-",A1)+LEN("-"),SEARCH("-",A1,(SEARCH("-",A1)+LEN("-")))-(SEARCH("-",A1)+LEN("-"))) => "化"
扩展:有多个分隔符,想跳过分隔符?在公式就要嵌套,用编程就要循环了!
提取中文、英文、数字
A1单元格的值是"数据化管理sjhgl"
① 提取中文
LEFT(A1,LENB(A1)-LEN(A1)) => "数据化管理"
② 提取英文
RIGHT(A1,2*LEN(A1)-LENB(A1)) => "sjhgl"
A1单元格的值是"12345数据化管理"
③ 提取数字
LEFT(A1,2*LEN(A1)-LENB(A1)) => "12345"
扩展:待提取的内容不是刚好在左边,也不是刚好在右边?如果是复杂的中文、英文、数字混合情况,不建议用公式了,可以试试快速填充功能Ctrl+E,或利用Word的通配符替换功能辅助处理。
更复杂情况
A1单元格的值是"数-据-化-管-理"
① 求"-"在字符串中的出现次数
LEN(A1)-LEN(SUBSTITUTE(A1,"-","")) => 4
② 求最后一个"-"在字符串中的位置
LOOKUP(1,0/(MID(A1,ROW(1:20),1)="-"),ROW(1:20))
③ 再假设A1单元格的值是"物联网包月套餐5元30M",现要提取"元"前面的数字
MIDB(LEFT(A1,FIND("元",A1)-1),SEARCHB("?",LEFT(A1,FIND("元",A1)-1)),LEN(LEFT(A1,FIND("元",A1)-1))*2-LENB(LEFT(A1,FIND("元",A1)-1)))
总 结
用Excel函数去处理文本,主要是处理一些简单的情况,如果面对一些复杂的情况,就很难去解决了,或者说公式越写越长,效率也越来越低,例如:
① 文本评价数据中,列出2~3个字的组合,以便了解所有可能的评价关键词
② 文本评价数据中,每一条评价数据,假设出现了多次的“满意”关键词,怎么能只统计为1次
……
在做电商评价、客服评价、售后质量评价等分析时,经常都要面对一些文本统计的事情,这时就需要用到VBA来辅助解决了。我最近就用VBA做了一个文本分析工具模板,有兴趣的朋友可以点以下图片了解详情。