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单元格”位置,点击【加载】即可加载成功。具体操作过程如下图所示:
晋ICP备17002471号-6