从包含逗号分隔文本的单元格中提取唯一的字符

我有一个像下面这样的值的单元格列表:

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