我在单元格A2中的值为India,China,India Australia
。我希望单元格B2的结果为India,China,Australia
。
请注意,我希望公式能够从单个单元格(而不是单元格范围)中找到唯一值。由于使用countif
进行了很多回复,因此可以减少计数。我不想要这样的事情,我只想让公式进行计算以仅从单个单元格中找到唯一值。
请清楚地看我的问题并提出答案。
答案 0 :(得分:0)
这是用户定义的公式,用于在字符串中查找不同的单词。
放入标准VBA模块
使用该函数的方式与使用其他单元格公式函数的方式相同。
=Distinct("a,a,b,c, d e f f f")
a, b, c, d, e, f
Apples, App Pear Apples Pear Bees,
B1 =Distinct(A1)
Apples, App, Pear, Bees
VBA代码
Public Function Distinct(ByVal s As String) As String
Dim found As Boolean
Dim f As Variant
Dim w As Variant
Dim a() As String
a = Split("") 'empty array
For Each w In Split(WorksheetFunction.Trim(Replace(s, ",", " ")), " ")
found = False
For Each f In a
If f = w Then found = True
Next f
If Not found Then
ReDim Preserve a(UBound(a) + 1)
a(UBound(a)) = w
End If
Next w
Distinct = Join(a, ", ") ' Change to "," to remove space in output.
End Function
不同的字数可以通过以下公式找到:
=IF( Distinct(A1)="", 0, LEN( Distinct(A1)) - LEN( SUBSTITUTE( Distinct(A1), ",", "")) + 1)
计算逗号(并忽略空格),因此即使将VBA代码修改为输出a,b,c
,它也仍然有效。