告别复杂函数,这个更简单高效的「数据提取」技巧好用到爆!

Excel2020年11月23日发布 转载
18.5K 1040
作者:小北童鞋
来源:芒种学院(ID:lazy_info)

近期在公众号后台收到了不少关于数据提取的问题,各式各样的都有,例如:

  1. 在中英文混合的数据中提取中文/英文;
  2. 在某段话中将数字全部提取出来;
  3. 在混乱的数据中将特殊符号全部提取出来;

单纯看文字可能看不出啥,例如将下方“中英文”混合型的数据中,将所有的英文/中文/特殊字符全部匹配出来:

利用「函数法」来实现?写起来实在是太难了,而且不具备通用性,下次碰到其他的数据类型,大概率需要重写。

还是利用「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中”一”为所有中文的开头,而”龟”则为最后一个中文汉字。

是不是超级简单?同样如果要提取所有的大小写/数字只需更改相应的提取规则即可。

常用的技巧也不多,小北也帮大家整理好了:

  1. {"0".."9"}代表所有的数字;
  2. {"A".."Z"}代表所有的大写字母;
  3. {"a".."z"}代表所有的小写字母;
  4. {"A".."z"}代表所有的英文字母;
  5. {"一".."龟"}代表所有的中文字符;

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混合数据提取」技巧就分享到这里了,下次提取数据,再也不用手动提取了。


阅读原文

© 版权声明

相关文章

104 条评论

  • 纱织
    纱织 读者

    PQ导入大文件会卡吗?怕电脑吃不消。

    日本
    回复
  • InfernoRush
    InfernoRush 游客

    这技巧可以,收藏了晚上研究下

    中国贵州
    回复
  • 自闭少女
    自闭少女 游客

    感觉比函数简单,但得先学PQ基础

    中国重庆
    回复
  • 青衫剑圣
    青衫剑圣 读者

    PQ刷新真方便,不用重复搞了

    中国辽宁
    回复
  • 梦泽远
    梦泽远 读者

    一和龟这个范围真够绝的,哈哈

    美国
    回复
  • 幽冥低语者
    幽冥低语者 读者

    这招比VBA简单多了,收藏试试

    法国
    回复
  • 雾心灵
    雾心灵 读者

    原来还能用Remove反向操作,思路打开了

    美国
    回复
  • 鸡飞狗跳
    鸡飞狗跳 读者

    用Remove删英文后标点还在吗?

    中国甘肃
    回复
  • 醉蓬莱
    醉蓬莱 读者

    特殊符号那段实用,刚需

    日本
    回复
  • 丸子酱
    丸子酱 游客

    PQ导入大文件卡不卡?怕电脑撑不住

    中国山东
    回复
  • 橄榄幽静
    橄榄幽静 游客

    之前为了提取数据学VBA,现在看白学了

    中国河北
    回复
  • 绒绒小熊
    绒绒小熊 游客

    Text.Select处理中文真能全覆盖?有点怀疑

    中国上海
    回复
  • Hunter
    Hunter 游客

    有人试过提取带空格的数字吗?会不会乱

    澳大利亚
    回复
  • 翡翠衾
    翡翠衾 读者

    这方法对我这种Excel小白太友好了,终于不用求人了

    日本
    回复
  • 机械意志
    机械意志 游客

    明天上班就试这个,希望别搞崩系统

    中国四川
    回复
  • 杞人忧天
    杞人忧天 游客

    要是能自动识别字符类型就绝了,还得手动写区间太累

    中国北京
    回复
  • VenomBlade
    VenomBlade 游客

    这方法看着爽,公司电脑跑不动PQ才是现实

    中国上海
    回复
    • 忧郁的秋叶
      忧郁的秋叶 游客

      我这老电脑也卡,等升级后再整这技巧看看

      中国四川@ VenomBlade
      回复
  • Thundering Tiger
    Thundering Tiger 游客

    吃瓜群众表示:你们玩得挺花,我还在用Ctrl+C/V

    韩国
    回复
  • 孤鸿
    孤鸿 游客

    之前搞数据清洗,也是各种乱码混着来,折腾一整天

    中国陕西
    回复
  • 微光梦境
    微光梦境 游客

    Text.Remove删空格太狠了,能不能留点喘气的余地啊?

    中国湖北
    回复
  • 风铃小鹿
    风铃小鹿 游客

    那个“龟”字真不靠谱,生僻字根本抓不到,坑了我一次

    中国北京
    回复
  • 菜菜
    菜菜 游客

    这函数写得跟密码似的,能记住算我输

    中国湖北
    回复
  • 虚无裂隙
    虚无裂隙 读者

    真是救了我好几天的命,之前那堆乱七八糟的报表要手敲,现在一句就搞定,直接把加班时间省了半天!

    中国河南
    回复
    • 奶味草莓
      奶味草莓 游客

      真的假的?之前用Ctrl+E被坑过好多次

      日本@ 虚无裂隙
      回复
  • 深渊魔瞳
    深渊魔瞳 游客

    说它万能我不信,特殊符号还是漏掉了

    中国北京
    回复
  • 花草香
    花草香 游客

    那如果数据里还有空格,怎么保留不被删掉?

    美国
    回复
  • 符文守望者
    符文守望者 游客

    这玩意儿卡死的时候简直要崩

    中国河南
    回复
  • 高冷的雪豹
    高冷的雪豹 游客

    之前手动删半天,看到这直接笑了

    中国四川
    回复
    • 墨剑行
      墨剑行 游客

      手动删半天的苦我懂,这招省事儿直接笑

      中国广东@ 高冷的雪豹
      回复
  • 手工皮具匠
    手工皮具匠 游客

    全角数字也能用{0..9}抓到

    中国北京
    回复