作者:小北童鞋
来源:芒种学院(ID:lazy_info)
近期在公众号后台收到了不少关于数据提取的问题,各式各样的都有,例如:
- 在中英文混合的数据中提取中文/英文;
- 在某段话中将数字全部提取出来;
- 在混乱的数据中将特殊符号全部提取出来;
单纯看文字可能看不出啥,例如将下方“中英文”混合型的数据中,将所有的英文/中文/特殊字符全部匹配出来:

利用「函数法」来实现?写起来实在是太难了,而且不具备通用性,下次碰到其他的数据类型,大概率需要重写。
还是利用「Ctrl+E」呢?看着好像不错,来尝试下。

这太难受了。。。
面对这种规律性不强的数据,Ctrl+E彻底失灵了,还是那句老话。
单纯利用传统的Excel来实现会非常麻烦,建议点到为止。
当然就这样结束了么?No,本着给大家提升效率的想法。
今天小北来给大家分享过下在 PowerQuery 中如何一句代码解决问题!
PQ超强文本处理函数
在 PowerQuery 中就有一个超强的 Text 系列函数,可以完美解决今天遇到的小问题。
将数据导入到 PQ 中,然后点击「添加列」中的「自定义列」,输入以下函数:
= Text.Select([数据], {"A".."z"})Code language: Excel (excel)
理解起来也非常简单,提取数据中A-z的所有数据。
也就是所有英文字母,大写A为字母开头,小写z为字母结尾。
一句话就轻松将数据中的所有英文字符提取出来了,太强了!

那么提取好了英文,中文数据要如何提取呢?
更改下函数为如下即可:
=Text.Select([数据], {"一".."龟"})Code language: Excel (excel)
跟字母理解起来一样,PQ中”一”为所有中文的开头,而”龟”则为最后一个中文汉字。

是不是超级简单?同样如果要提取所有的大小写/数字只需更改相应的提取规则即可。
常用的技巧也不多,小北也帮大家整理好了:
{"0".."9"}代表所有的数字;{"A".."Z"}代表所有的大写字母;{"a".."z"}代表所有的小写字母;{"A".."z"}代表所有的英文字母;{"一".."龟"}代表所有的中文字符;
PQ中的文本移除函数
在某些情况下直接使用 Text.Select 并不能很快的解决问题。
主要在于提取规则过于复杂,这个时候可以考虑另外一个思路。
既然提取不出来,我们可以将不需要的全部删除,变相等于提取了。
这个时候就可以使用 Text.Remove 函数了。
例如下面的数据需要提取「中文+特殊字符」。
同样的步骤,插入如下公式:
=Text.Remove([数据], {"A".."z"})Code language: Excel (excel)
意思就是将所有英文字母全部移除,现在同样能轻松提取。

如果想要提取「特殊字符」,就可以将中文+英文+数字全部删除,更改公式:
=Text.Remove([数据], {"0".."9","一".."龟", "A".."z"})<strong></strong>Code language: Excel (excel)
换个思路轻松解决问题,因为单独选择特殊字符是一件非常麻烦你的事情,操作结果如下。

而且利用 PQ 处理得数据,如果数据更新了,只需要右击即可刷新。
无需重复操作,比 Ctrl+E 和函数强太多了。

是不是非常强呢?当然 PQ 的 Text 系列函数还有非常多超强的技巧值得学习,在芒种鸽了 N 久的 PQ 课中会和大家更加详细的分享~
好了,那么今天的「PQ混合数据提取」技巧就分享到这里了,下次提取数据,再也不用手动提取了。
© 版权声明
文章版权归作者所有,未经允许请勿转载。




PQ导入大文件会卡吗?怕电脑吃不消。
这技巧可以,收藏了晚上研究下
感觉比函数简单,但得先学PQ基础
PQ刷新真方便,不用重复搞了
一和龟这个范围真够绝的,哈哈
这招比VBA简单多了,收藏试试
我也收藏了试试
原来还能用Remove反向操作,思路打开了
用Remove删英文后标点还在吗?
特殊符号那段实用,刚需
PQ导入大文件卡不卡?怕电脑撑不住
之前为了提取数据学VBA,现在看白学了
Text.Select处理中文真能全覆盖?有点怀疑
有人试过提取带空格的数字吗?会不会乱
这方法对我这种Excel小白太友好了,终于不用求人了
明天上班就试这个,希望别搞崩系统
要是能自动识别字符类型就绝了,还得手动写区间太累
这方法看着爽,公司电脑跑不动PQ才是现实
我这老电脑也卡,等升级后再整这技巧看看
吃瓜群众表示:你们玩得挺花,我还在用Ctrl+C/V
之前搞数据清洗,也是各种乱码混着来,折腾一整天
Text.Remove删空格太狠了,能不能留点喘气的余地啊?
那个“龟”字真不靠谱,生僻字根本抓不到,坑了我一次
这函数写得跟密码似的,能记住算我输
真是救了我好几天的命,之前那堆乱七八糟的报表要手敲,现在一句就搞定,直接把加班时间省了半天!
真的假的?之前用Ctrl+E被坑过好多次
说它万能我不信,特殊符号还是漏掉了
那如果数据里还有空格,怎么保留不被删掉?
这玩意儿卡死的时候简直要崩
之前手动删半天,看到这直接笑了
手动删半天的苦我懂,这招省事儿直接笑
全角数字也能用{0..9}抓到