咔片PPT · AI自动生成演示文稿,模板丰富、排版精美 讯飞智文 · 一键生成PPT和Word,高效应对学习与办公

本期内容主要给大家介绍一个真实的案例,使用Excel Power Query来清洗数据的例子。前几天在QQ群里看到,很多的大佬都给了多种多样的解法,这里选择一种比较常规的方法来给大家讲解一下。


案例


要求:将每行的备注列的数据替换掉扫码编号外,对于症状或者项目进行拆分到行。如有-2,-3,-4的这样,数字表示重复几次。



结果样式(局部)如下图所示。



对于这个问题,使用Excel中的Power Query功能来清洗是比较简单的。但是使用常规的鼠标操作有些困难,使用M函数的话,将会就得很容易。

清洗思路


先对备注列按文字与数字进行拆分成list,然后再将每个list按“-”拆分成list,将拆分后的list的文本按数字重要即可,使用到List.Repeat函数。最后展开list即可。

操作步骤


Step-01:将数据加载至Power Query编辑器中。


Step-02:先对备注列使用Table.TrasnformColumns函数进行转换,转化时执行Splitter.splitTextBicharacterTansition函数进行拆分。

Splitter.SplitTextBicharacterTansition函数是一个拆分器,该函数有两个参数,一个是before,即第一个,用来表示第一个特征,如这里的数字{"0".."9"};第二个after用来表示第二个特征,即这里的文本,{"一".."龟"}。



Step-03:然后将对公式进行嵌套,删除每个list里面的第一个文本,即扫码编号。可以使用List.Skip函数。



Step-04:再对每一个List中的文本使用“-”进行拆分,可以使用到Text.Split函数,但是对于每个List中的文本进行操作要使用函数List.Transform函数。



Step-05:接下来对来构造一个Record,先取来一每个list中的第一个元素,接取出来第二个元素,取元素的时候可以使用深化,使用List.Repeat函数进行重复次数即可,但是需要注意的是拆分的数字为文本,需要使用Number.From转化成数值方可。



但是从上面的图中观察发现有的报错了,这是因为如下图所示的文本串没有可重复的数字的时候就会报错。



所以对上面的情况还要使用容错语句进行容错,即try……otherwise……,在Power Query中使用语句时不区分大小时,如if……then……等。但是函数必须区分大小写。但不是所有的函数都会区分大小写,如#table,像这种带#号的函数。



Step-06:接着嵌套函数,将每一行的list里面的所有的list进行合并,可以使用List.Combine函数。



Step-07:最终将“备注”列进行展开即可。



所以整体的代码如下图所示: