快速提取首个任意汉字前数字,2个方法,其实都很简单! | PBI实战技能

2021-08-31 16:09:45 浏览数 (1)

- 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)即可:

同时,我们还可以直接把输出的列名改掉,这样,就会直接按照我们需要的列名进行输出:

是不是非常完美?

但是,我要告诉你,这个方法虽然可以用,但其实还是有点儿条件的,在什么情况下不能用?下载源文件看看就知道了:

0 人点赞