0
点赞
收藏
分享

微信扫一扫

Excel单元格内数据去重,保留唯一值!



Excel情报局

职场联盟Excel


生产挖掘分享Excel基础技能

Excel爱好者大本营

用1%的Excel基础搞定99%的职场问题

做一个超级实用的Excel公众号

Excel是门手艺玩转需要勇气

数万Excel爱好者聚集地

SUPER EXCEL MAN


Excel单元格内数据去重,保留唯一值!_代码编辑器

Excel单元格内数据去重,保留唯一值!_代码编辑器_02

    Excel单元格内数据去重,保留唯一值!_分隔符_03


1

职场实例


今天小编遇到了这样的一个问题:

如何对【同一单元格内】用分隔符间隔开来的数据去重?


在职场办公中,真是啥Excel表格问题都会遇到,真是应了最近抖音上非常火的一句话:真是职场办公(人生)无常,大肠包小肠!


我们来用下面几组简单的数据在Excel中模拟一下具体的工作场景:

A列为我们遇到的原始数据,我们观察一下A列每个单元格的数据特点:

发现每个单元格中的数据都是由若干个相同的分隔符“/”,将几组数据间隔开来的,非常的有规律。但是被分隔符间隔开来的数据含有重复值,比如A1单元格“A/B/A/B”,含有重复的字符A和B,我们想要去除重复值,保留唯一值,去重后的数据如B2单元格所示:“A/B”。


Excel单元格内数据去重,保留唯一值!_分隔符_04


有的小伙伴遇到这个问题,可能在自己的脑海中快速浮现出的功能是“删除重复值”对吧,但是Excel中【数据】-【数据工具】-【删除重复值】功能是不能实现今天这个去重场景的。我们看到微软Office对于【删除重复值】的解释:

“删除工作表中的重复行,可以选择应检查哪些列的重复信息”。所以它删除的是重复的行信息,针对的是整个单元格,而不能对单元格内的具体信息辨别去重。


Excel单元格内数据去重,保留唯一值!_数据_05



2

问题解答


针对这样的工作场景,Excel没有提供给我们一个最直接的功能按钮解决这样的问题。但我们可以使用VBA代码快速的解决今天的问题。


【代码如下】:



















Sub lqxs()Dim Arr, i&, aa, j&, Brr, dSet d = CreateObject("Scripting.Dictionary")Sheet1.ActivateArr = [a1].CurrentRegionReDim Brr(1 To UBound(Arr), 1 To 1)For i = 2 To UBound(Arr)    If InStr(Arr(i, 1), "/") Then        aa = Split(Arr(i, 1), "/")        For j = 0 To UBound(aa)            If aa(j) <> "" Then d(aa(j)) = ""        Next    End If    Brr(i, 1) = Join(d.keys, "/")    d.RemoveAllNext[b1].Resize(UBound(Brr), 1) = BrrEnd Sub


代码是现成的,所以不需要我们自己去复杂的编写,直接复制粘贴即可。

运行VBA代码的【三步】经典步骤:

【打开VBA代码编辑器】

鼠标右击工作表名称标签,点击【查看代码】(或按快捷键Alt+F11键),进入到VBA代码编辑器窗口。


【复制粘贴代码】

将上面的一段代码复制并粘贴到VBA代码编辑器窗口内。


【运行代码】

点击编辑器窗口上方的【运行-运行子过程/用户窗体】按钮。

具体操作步骤如下图所示:


Excel单元格内数据去重,保留唯一值!_代码编辑器_06



3

代码释义


代码:Arr = [a1].CurrentRegion

其中[a1]代表要进行去重的数据所在的列即A列。根据实际情况进行灵活变更。


Excel单元格内数据去重,保留唯一值!_分隔符_07


代码:For i = 2 To UBound(Arr)

其中2代表要从A列数据源中的第2个单元格开始进行去重。根据实际情况进行灵活变更。


Excel单元格内数据去重,保留唯一值!_代码编辑器_08


代码:If InStr(Arr(i, 1), "/") Then

代码:aa = Split(Arr(i, 1), "/")

代码:Brr(i, 1) = Join(d.keys, "/")

其中的“/”代表每个单元格中的分隔符“/”。根据实际情况进行灵活变更。


Excel单元格内数据去重,保留唯一值!_分隔符_09


代码:[b1].Resize(UBound(Brr), 1) = Brr

其中[b1]代表去重后的数据放置的位置即B列。根据实际情况进行灵活变更。


Excel单元格内数据去重,保留唯一值!_代码编辑器_10


回顾关键内容,善用图片表达,学会建立联系,拓展深度广度,浓缩关键概念,应用到行动中,善于归纳总结,尝试进行分享。


Excel单元格内数据去重,保留唯一值!_代码编辑器_11

举报

相关推荐

0 条评论