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

时间:2015-09-16 14:45:23

标签: excel

我有一个单元格列表,其值如下所示:

zip

我想要一个能给我下面的公式(上面的唯一列表)。我应该能够把它写成一行并将其复制下来。

a,a,b,c,d
f,g,h,h,h,j
a,b,b
f,f,f,y,y,u,u

2 个答案:

答案 0 :(得分:1)

使用仅使用内置工作表函数将逗号分隔的唯一结果返回到一个单元格的公式无法执行此操作。

但是,使用用户定义函数(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

如果源字符串在单元格A1中,则在单元格B1中输入以下公式:

=UniqueList(A1)

那就是它。现在,根据需要向下复制公式。

答案 1 :(得分:0)

考虑到重复的字母是有序的,就像你的样本一样,这应该可以解决问题:

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