作者:小北童鞋
来源:芒种学院(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根本打不开,哭了。
生僻字能抓出来吗?比如“龘”这种。
这函数看着跟天书一样,能记住才怪。
明天就拿这个试日报,希望能省点时间。
围观一下,你们说的我都看不懂🤔
这技巧挺实用,回头试试看。
我试过了,确实好用。
这思路可以,删除不需要的反向操作。
如果数据里还有日文字符,能直接用类似区间提取吗?请大神指点
日文字符区间没那么简单吧,Unicode不连续的
我试了下,真的省了不少时间
太贵了吧这也,公司还不给买Pro版?
要是数据里混了表情符号能提出来吗?
表情符号能提吗?试了下好像不行啊
之前搞过这个,确实折腾了好久
感觉还行,不过我还在用函数硬扛
这方法可以试试,明天就用新表练手
话说日文字符那个问题有人解决了吗?
Text.Remove原来还能这么玩,学废了😂
要是早看到这个,上周就不会加班到半夜了
那个啥,[一]到[龟]真能覆盖所有汉字?有例外没?
刷新就能更新数据这点太香了
PQ这招比Ctrl+E强太多了
之前一直用函数折腾半天,这下省事了
同感,以前太费时间了。
提取特殊字符那个思路绝了
换了个思路,一下就通了。
这函数真香,比写正则轻松多了
中文提取用“一”到“龟”这个范围挺妙的
提取规则还能这么写,学到了
那个“一”到“龟”覆盖全汉字?存疑🤔
公司还在用2016版,根本跑不动PQ😭
2016版真的没法用?我还在用2013硬扛😅
这个思路确实不错,可以收藏备用
同感,我也存了
特殊符号提取那段救我命了,刚处理完客户乱码数据
试了下,中英文混合提取挺管用
同款,省了好多事
PQ这招比Ctrl+E强,不用每次手动调
确实,刷新一下就能搞定
明天就拿日报表开刀,看能不能省半小时
数字+中文混排试了下,秒出结果!
Text.Remove移除英文后中文还在,稳了
这方法比Ctrl+E靠谱多了,终于不用猜它抽什么风了
“一”到“龟”真能覆盖生僻字?比如“䶮”这种能提出来吗?