内容提要
在Power Query中,运用Text.Select和Text.Remove两个文本函数,几乎可以解决所有数据杂乱的情况。
不怕死神一样的对手,就怕猪一样的队友。
我们可能都有碰到过非常混乱的原始数据,Power Query有非常强大的数据清洗功能,比如菜单界面提供了“拆分列”和“提取”,可以很方便的在字母大小写、数字和非数字之间拆分数据。
但如果碰到毫无规律的文本、数字、英文字母、标点符号混合的单元格数据,清洗时需要用到两个Text.函数。
Text.Remove(文本或列表,{要移除的字符})
Text.Select(文本或列表,{要提取的字符})
案例1
单元格中英文的位置毫无规律,如果只保留中文名
可以用到Text.Remove函数
添加自定义列,输入函数:
品牌1中文=Text.Remove([品牌1],{"A".."Z"})
说明:{“A”..“Z”} 是生成了一个从A到Z的列表,只要是大写字母(不考虑顺序),就从单元格中移除
PQ用的是M语言,M语言对函数字母的大小写有严格要求。
案例2
如果只保留英文名
添加自定义列,输入函数:
品牌1英文=Text.Remove([品牌1],{"一".."龟"})
说明:PQ 的中文字符以 Unicode(统一码)连续储存,
“一”的 Unicode最小,“龟”的 Unicode 最大,
因此{“一”..“龟”}就包含了所有的汉字列表(通常情况下)。
案例3
单元格中有大小写英文,如果只保留中文名
添加自定义列,输入函数:
品牌2中文=Text.Remove([品牌2],{"A"..“z"})
说明:如果要移除的英文字母包含大小写,就把{“A”..“Z”} 中大写“Z”变成小写“z”
案例4
单元格中有大小写英文、还有位置不规则的数字,如果只保留数字
添加自定义列,输入函数:
品牌3数字=Text.Remove([品牌3],{"A".."z","一".."龟"})
说明:如果要同时移除的英文字母和汉字,则在要移除的两种字符中间用逗号“,” {"A".."z","一".."龟"})
案例5
如果要移除数字,只保留汉字和英文
添加自定义列,输入函数:
品牌3中文英语=Text.Remove([品牌3],{"0".."9"})
说明: {“0”..“9”} 是生成了一个从0到9的列表,只要是数字(不考虑顺序),就从单元格中移除
案例6
单元格有不规则的标点符号,英文,中文,数字,如果只保留数字
可以用到Text.Select函数
添加自定义列,输入函数:
品牌4数字=Text.Select([品牌4],{"0".."9"})
说明:Text.Select和Text.Remove刚好相反,Text.Remove是移除字符, Text.Select是提取字符。
总结
练习素材,扫描下载
关注公众号,回复“PQ Text”,获取下载文件。
留言与评论(共有 0 条评论) “” |