我有一个单元格列表,其值如下所示:
zip
我想要一个能给我下面的公式(上面的唯一列表)。我应该能够把它写成一行并将其复制下来。
a,a,b,c,d
f,g,h,h,h,j
a,b,b
f,f,f,y,y,u,u
答案 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