从包含逗号分隔文本的单元格中提取唯一的字符
我有一个像下面这样的值的单元格列表:
a,a,b,c,d f,g,h,h,h,j a,b,b f,f,f,y,y,u,u
我想要一个公式,会给我下面(上面的唯一列表)。 我应该可以写一行并复制下来。
a,b,c,d f,g,h,j a,b f,y,u
没有办法做到这一点,只使用内置的工作表函数,将返回逗号分隔的唯一结果到一个单元格的公式。
但是,使用用户定义函数(UDF)来实现同样的事情是非常简单的。
只需将这个小程序放在一个标准的代码模块中:
Public Function UniqueList(s) Dim i&, k$, v v = Split(s, ",") For i = 0 To UBound(v) If InStr(k, v(i)) = 0 Then k = k & "," & v(i) Next UniqueList = Mid$(k, 2) End Function
如果您的源string在单元格A1中,则在单元格B1中input此公式:
=UniqueList(A1)
而已。 现在根据需要向下复制公式。
考虑到重复的字母是有序的,就像你的样本,这应该做的伎俩:
Function UniqueLetters(ByVal cell As Range) As String letters = Split(cell.Value, ",") For Each letter In letters If letter <> current_letter Then current_letter = letter unique_letters = unique_letters + letter + "," End If Next UniqueLetters = Left(unique_letters, Len(unique_letters) - 1) End Function