PQ实战 | 文本中提取数值并求和

Power Query(以下简称PQ)为了数据清洗提供了大量的函数,基本可以处理日常的各种“脏”数据!

今天我们就来解答一位网友的问题,那就是如何提取一段文本中的数值,并求和,在PQ中,这个问题非常简单!

我们要求解的就是这里的总分,也就是把分值提取并相加!

第一步:加载数据到PQ

如果你是WPS或者低于2007就不要折腾了,这一块,可以看前面的基础教程,这里就不啰嗦了!2016及以上版本已经自带PQ功能,在数据选项看下!

第二步:按加号拆分

在PQ中新增一列,不像Excel中直接旁边输入即可,需要通过 【添加列】-> 【自定义列】,输入对应的列 标题,和对应的处理逻辑!

我们这里是使用Text.Split函数,如其名,他是Text类中的Split函数,也就是文本拆分函数,第一参数需要给定拆分的文本 [加分项及分支]-表示对应的列 ,第二个就是分隔符(+)!

确定后,拆分成list,点击list,可以看到对应的拆分的内容,这个list和其他语言中数组基本类似!

第三步:提取数值

在PQ中,我们可以Text.Select来制定要提取的字符,比如{"0".."9"},表示要提取文本型 "0"-"9"这10个数,这里我们还需要小数点,所以应该这样去写

=List.Transform(

Text.Split([加分项及分值],"+"),

each Number.From(

Text.Select(_,{"0".."9","."})

)

)

Number.From 的作用是把文本型数值转成数值型,方便我们下一步进行求和

第四步:对转换后的数值进行求和-List.Sum

我们只需要对上一步的结果使用List.Sum求和即可!

最终全部M函数代码如下:

let 源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content], res= Table.AddColumn(源, "总分", each List.Sum( List.Transform( Text.Split([加分项及分值],"+"), each Number.From( Text.Select(_,{"0".."9","."} ) ) ) ) )in res

除了以上方法,PQ中也看通过Web类函数的特性来写js,利用js中的正则表达式来提取,感兴趣的同学可以尝试一下,之前我们有分享过类似的案例!

(0)

相关推荐