单元格内部数据去重提取唯一值,用Power Query M函数简直小菜一碟!

    1

职场实例

小伙伴们大家好,今天我们继续学习Excel职场技巧如何将单元格内部数据去重提取唯一值?以前小编整理过相关类似的问题,一般我们会采取Excel基础函数或者是VBA代码等方法来解决此类问题。今天呢我们来尝试使用Power Query 中的M函数,原理清晰简单,操作易于上手,可快速的实现最终效果。

如下图所示:

A列为原始数据列,A列每个单元格内部的数据都是由分隔符逗号“,”,将各个水果名称分成了若干部分,但是我们发现单元格内部各段的水果名称是有重复的数据,例如A2单元格中的水果名称“橘子”和“杨梅”各出现了两次,有重复的现象。现在我们想要将单元格内部的数据去重提取唯一值,如A2单元格去重后的唯一值为“苹果,橘子,荔枝,杨梅”。

2

解题思路

我们今天使用Excel2016及以上版本自带的Power Query编辑器中强大的M函数来解决这个问题。

下面我们就来看一下具体操作方法。

首先选中原始数据区域A1:A4,点击【数据-从表格】,在弹出的“创建表”对话框中,默认勾选“表包含标题”,点击【确定】,即可将原始数据加载到Power Query编辑器中。如下图操作所示:

在Power Query编辑器中,点击【添加列-自定义列】,在【自定义列】对话框中,可以自定义输入新的列名:“列表”。然后在【自定义列公式】中输入M函数

=Text.Split([数据列],",")

得到一个列名称为“列表”的新列数据。

M函数语法:

=Text.Split(text as text, separator as text) as list

函数释义:

Text.Split函数为文本函数,返回根据指定的分隔符separator拆分文本值 text 而得到的文本值列表。

从由逗号"," 分隔的文本值 "苹果,橘子,荔枝,杨梅,橘子,杨梅" 创建列表。

即利用M函数:

=Text.Split("苹果,橘子,荔枝,杨梅,橘子,杨梅",",")

输出对应的List列表(表格模式)

{"苹果",

 "橘子",

 "荔枝",

 "杨梅",

 "橘子",

 "杨梅"}

继续在Power Query编辑器中插入自定义列

点击【添加列-自定义列】,在【自定义列】对话框中,可以自定义输入新的列名:“去重”。然后在【自定义列公式】中输入M函数

=List.Distinct([列表])

M函数语法:

=List.Distinct(list as list, optional equationCriteria as any) as list

函数释义:

返回一个列表,此列表包含列表list中的所有值,并且表中重复项已被删除。如果列表为空,结果则为空列表。

从以下List列表中删除重复项

{"苹果",

 "橘子",

 "荔枝",

 "杨梅",

 "橘子",

 "杨梅"}

即利用M函数:

=List.Distinct({"苹果,橘子,荔枝,杨梅,橘子,杨梅"})

输出对应的去重后的List列表(表格模式):

{"苹果",

 "橘子",

 "荔枝",

 "杨梅",}

由于去重后的数据以List列表模式存储,只有点击后在下方预览区域显示,所以我们需要将其提取出来

点击“去重”单元格右侧的扩展按钮,点击【提取值】,在弹出的【从列表中提取】的对话框中,设置【选择串联列表值所使用的分隔符】为【逗号】,点击【确定】,即可完成最后提取。最后将多余的不用的列选中删除即可。操作过程如下图所示

最后,我们将Power Query中的数据加载到Excel表格的B列即可

点击【主页-关闭并上载-关闭并上载至】,加载到【现有工作表】中的“B1单元格”位置,点击【加载】即可加载成功。具体操作过程如下图所示


(职场责编:拓荒牛 )