- 1 -
这是微信里一位朋友提的问题:将“亿”、“万”等不同单位(汉字)前的数字给提取出来:
初一想,我们当然可以用Text.SplitAny函数来实现,添加自定义列并写公式如下:
这个公式很简单,即对内容用所有汉字(Text.Combine)进行拆分(Text.SplitAny),这时得到一个拆分结果列表,再取其中在第一项{0}即可。
代码语言:javascript复制= Text.SplitAny(
[内容],
Text.Combine({"一".."龟"})
){0}
- 2 -
上面的方法直接使用函数来实现,对于熟悉PQ基础函数的朋友来说应该都不难,但回头一想,现在PQ里不是支持“从数字到非数字”的分列吗?那是否能直接通过操作来实现呢?
选定要拆分的内容,点选【拆分列/按照从数字到非数字的转换】:
此时,我们发现,内容被拆分成了“内容.1”、“内容.2”、“内容.3”三列(如果有更多内容的话,可能还会有更多的列),同时,在生成的步骤公式里,对应了一个“输出”参数——{“内容.1”,“内容.2”,“内容.3”}:
显然,我们只需要"内容.1",那我们是不是要删掉内容2和内容3两列呢?而且,问题是,如果因为数据不同还有更多的列,那怎么能确保所有都删掉?
其实,这里很简单,我们将上面的输出参数直接保留“内容.1”(删掉内容2和3)即可:
同时,我们还可以直接把输出的列名改掉,这样,就会直接按照我们需要的列名进行输出:
是不是非常完美?
但是,我要告诉你,这个方法虽然可以用,但其实还是有点儿条件的,在什么情况下不能用?下载源文件看看就知道了: