1
职场实例
今天小编遇到了这样的一个问题:
如何对【同一单元格内】用分隔符间隔开来的数据去重?
在职场办公中,真是啥Excel表格问题都会遇到,真是应了最近抖音上非常火的一句话:真是职场办公(人生)无常,大肠包小肠!
我们来用下面几组简单的数据在Excel中模拟一下具体的工作场景:
A列为我们遇到的原始数据,我们观察一下A列每个单元格的数据特点:
发现每个单元格中的数据都是由若干个相同的分隔符“/”,将几组数据间隔开来的,非常的有规律。但是被分隔符间隔开来的数据含有重复值,比如A1单元格“A/B/A/B”,含有重复的字符A和B,我们想要去除重复值,保留唯一值,去重后的数据如B2单元格所示:“A/B”。
有的小伙伴遇到这个问题,可能在自己的脑海中快速浮现出的功能是“删除重复值”对吧,但是Excel中【数据】-【数据工具】-【删除重复值】功能是不能实现今天这个去重场景的。我们看到微软Office对于【删除重复值】的解释:
“删除工作表中的重复行,可以选择应检查哪些列的重复信息”。所以它删除的是重复的行信息,针对的是整个单元格,而不能对单元格内的具体信息辨别去重。
2
问题解答
Sub lqxs()
Dim Arr, i&, aa, j&, Brr, d
Set d = CreateObject("Scripting.Dictionary")
Sheet1.Activate
Arr = [a1].CurrentRegion
ReDim 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.RemoveAll
Next
[b1].Resize(UBound(Brr), 1) = Brr
End Sub
3
代码释义
代码:Arr = [a1].CurrentRegion
其中[a1]代表要进行去重的数据所在的列即A列。根据实际情况进行灵活变更。
联系客服